POST请求发送json数据java HttpUrlConnection

我已经开发了一个Java代码,该代码使用URL和HttpUrlConnection将以下cURL转换为Java代码。卷曲是:

curl -i 'http://url.com' -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"auth": { "passwordCredentials": {"username": "adm", "password": "pwd"},"tenantName":"adm"}}'

我已经编写了此代码,但是它始终会给HTTP代码400错误的请求。我找不到丢失的内容。

String url="http://url.com";

URL object=new URL(url);

HttpURLConnection con = (HttpURLConnection) object.openConnection();

con.setDoOutput(true);

con.setDoInput(true);

con.setRequestProperty("Content-Type", "application/json");

con.setRequestProperty("Accept", "application/json");

con.setRequestMethod("POST");

JSONObject cred = new JSONObject();

JSONObject auth = new JSONObject();

JSONObject parent = new JSONObject();

cred.put("username","adm");

cred.put("password", "pwd");

auth.put("tenantName", "adm");

auth.put("passwordCredentials", cred.toString());

parent.put("auth", auth.toString());

OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());

wr.write(parent.toString());

wr.flush();

//display what returns the POST request

StringBuilder sb = new StringBuilder();

int HttpResult = con.getResponseCode();

if (HttpResult == HttpURLConnection.HTTP_OK) {

BufferedReader br = new BufferedReader(

new InputStreamReader(con.getInputStream(), "utf-8"));

String line = null;

while ((line = br.readLine()) != null) {

sb.append(line + "\n");

}

br.close();

System.out.println("" + sb.toString());

} else {

System.out.println(con.getResponseMessage());

}

回答:

你的JSON不正确。代替

JSONObject cred = new JSONObject();

JSONObject auth=new JSONObject();

JSONObject parent=new JSONObject();

cred.put("username","adm");

cred.put("password", "pwd");

auth.put("tenantName", "adm");

auth.put("passwordCredentials", cred.toString()); // <-- toString()

parent.put("auth", auth.toString()); // <-- toString()

OutputStreamWriter wr= new OutputStreamWriter(con.getOutputStream());

wr.write(parent.toString());

JSONObject cred = new JSONObject();

JSONObject auth=new JSONObject();

JSONObject parent=new JSONObject();

cred.put("username","adm");

cred.put("password", "pwd");

auth.put("tenantName", "adm");

auth.put("passwordCredentials", cred);

parent.put("auth", auth);

OutputStreamWriter wr= new OutputStreamWriter(con.getOutputStream());

wr.write(parent.toString());

因此,JSONObject.toString()应该只为外部对象调用一次。

另一件事(可能不是你的问题,但我想提一下):

为确保不会遇到编码问题,如果不是,则应指定编码UTF-8

con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

con.setRequestProperty("Accept", "application/json");

// ...

OutputStream os = con.getOutputStream();

os.write(parent.toString().getBytes("UTF-8"));

os.close();

以上是 POST请求发送json数据java HttpUrlConnection 的全部内容, 来源链接: utcz.com/qa/417644.html

回到顶部