Tôi đang gọi một dịch vụ REST với một yêu cầu JSON và nó phản hồi với một HTTP 415 "Unsupported Media Type"
lỗi.
Loại nội dung yêu cầu được đặt thành ("Content-Type", "application/json; charset=utf8")
.
Nó hoạt động tốt nếu tôi không bao gồm một đối tượng JSON trong yêu cầu. Tôi đang sử dụng google-gson-2.2.4
thư viện cho JSON.
Tôi đã thử sử dụng một vài thư viện khác nhau nhưng không có gì khác biệt.
Ai có thể vui lòng giúp tôi giải quyết vấn đề này?
Đây là mã của tôi:
public static void main(String[] args) throws Exception
{
JsonObject requestJson = new JsonObject();
String url = "xxx";
//method call for generating json
requestJson = generateJSON();
URL myurl = new URL(url);
HttpURLConnection con = (HttpURLConnection)myurl.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestProperty("Content-Type", "application/json; charset=utf8");
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Method", "POST");
OutputStream os = con.getOutputStream();
os.write(requestJson.toString().getBytes("UTF-8"));
os.close();
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.getResponseCode());
System.out.println(con.getResponseMessage());
}
}
public static JsonObject generateJSON () throws MalformedURLException
{
String s = "http://www.example.com";
s.replaceAll("/", "\\/");
JsonObject reqparam=new JsonObject();
reqparam.addProperty("type", "arl");
reqparam.addProperty("action", "remove");
reqparam.addProperty("domain", "staging");
reqparam.addProperty("objects", s);
return reqparam;
}
}
Giá trị của requestJson.toString()
là:
{"type":"arl","action":"remove","domain":"staging","objects":"http://www.example.com"}
requestJson.toString()