0

JSON ペイロードを必要とするサーバーに対して API 呼び出しを実行しようとしていますが、JSON ペイロードも返します。

//Prereq: username/password are string variables, this.url is a URL()
HttpURLConnection http = (HttpURLConnection) this.url.openConnection();
http.setRequestMethod("POST");
http.setRequestProperty("Content-Type", "application/json");
http.setUseCaches(false);
http.setDoOutput(true);
try (DataOutputStream wr = new DataOutputStream(http.getOutputStream())) {
    wr.writeBytes(this.getPayload(username, password).toJSONString());
    wr.flush();
}

StringBuilder sb = new StringBuilder();
//Error here - returned 400.
try (InputStreamReader is = new InputStreamReader(http.getInputStream()); BufferedReader br = new BufferedReader(is)) {
    String line;
    while ((line = br.readLine()) != null) {
    sb.append(line);
    }
}
JSONObject response = (JSONObject) JSONValue.parse(sb.toString());

getPayload()Webリクエストで送信したいJSONObjectを返しますが、サーバーは、400設定したものが間違っているに違いないことを示すHTTPステータスエラーを返します。

POSTJSONObject を Web サーバーに適切に出力するにはどうすればよいですか?

資力:

ペイロードの例:

{
    "agent": {
        "name":"Minecraft",
        "version":1
    },
    "password":"---",
    "clientToken":cf6ffbc6-a681-47c1-9999-119c6d2ed597,
    "username":"---"
}
4

1 に答える 1

0

私自身のばかげた問題が見つかりました。ペイロードはUUID文字列として書き込んでいませんでした。

于 2014-04-03T04:47:31.047 に答える