Я пытаюсь отправить запрос json post с использованием HttpURLConnection в Scala. Я следовал вдоль двух учебных пособий и производится следующим образом:Использование HttpURLConnection для отправки запроса json POST
def sendPost(url: String, jsonHash: String) {
val conn: HttpURLConnection = new URL(url).openConnection().asInstanceOf[HttpURLConnection]
conn.setRequestMethod("POST")
conn.setRequestProperty("Content-Type", "application/json")
conn.setRequestProperty("Accept", "application/json")
conn.setDoOutput(true)
conn.connect()
val wr = new DataOutputStream(conn.getOutputStream)
wr.writeBytes(jsonHash)
wr.flush()
wr.close()
val responseCode = conn.getResponseCode
println("Sent: " + jsonHash + " to " + url + " received " + responseCode)
val in = new BufferedReader(new InputStreamReader(conn.getInputStream))
var response: String = ""
while(response != null) {
response = in.readLine()
println(response)
}
in.close()
}
Он отвечает:
Sent: '{"schedule":"R/2014-02-02T00:00:00Z/PT24H", "name":"Scala-Post-Test", "command":"which scalac", "epsilon":"PT15M", "owner":"[email protected]", "async":false}' to http://localhost:4040/scheduler/iso8601 received 500
java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:4040/scheduler/iso8601
, вытекающие из
val in = new BufferedReader(new InputStreamReader(conn.getInputStream))
, но если бы я восстановить его в качестве curl
запроса, он отлично работает :
curl -X POST -H 'Content-Type: application/json' -d '{"schedule":"R/2014-02-02T00:00:00Z/PT24H", "name":"Scala-Post-Test", "command":"which scalac", "epsilon":"PT15M", "owner":"[email protected]", "async":false}' http://localhost:4040/scheduler/iso8601
requirement failed: Vertex already exists in graph Scala-Post-Test
(что я ожидаю)
Любое понимание того, что не так? Я пытаюсь обнюхивать пакеты, чтобы определить, что по-другому.
(Примечание: я уже махнули на sys.process._)
Используйте 'PrintWriter' (а не' DataOutputStream'). –
^^ Игнорируйте это пока. Хотя здесь не обычно использовать 'DataOutputStream', в этом случае не имеет значения. Когда вы выводите строку 'jsonHash', она показывает ваш JSON, окруженный одинарными кавычками; это, наверное, проблема. –
Aha! Вы правы, одинарные кавычки вызывали 500. - возможно, nc -l кажется таким же, как сейчас, но 400 Bad Request. Поиск продолжается. – Austin