use*_*794 96 java json http-status-code-415
我正在使用JSON请求调用REST服务,它给出了Http 415"不支持的媒体类型"错误.
请求内容类型设置为("Content-Type","application/json; charset = utf8").
如果我在请求中不包含Json对象,它可以正常工作.我正在为json使用google-gson-2.2.4库.
我尝试使用几个不同的库,但它没有任何区别.
有人可以帮我解决这个问题吗?
这是我的代码:
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.abc.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;
}
}
Run Code Online (Sandbox Code Playgroud)
requestJson.toString的值是:
{"type":"arl","action":"remove","domain":"staging","objects":" http://www.abc.com "}
use*_*794 73
不知道的原因,但删除线charset=utf8,从 con.setRequestProperty("Content-Type", "application/json; charset=utf8")解决问题.
Par*_*nki 40
添加内容类型:application/json并接受:application/json
Mah*_*asr 12
HttpVerb 需要其标头作为键值对的字典
headers = {'Content-Type': 'application/json', 'charset': 'utf-8'}
Run Code Online (Sandbox Code Playgroud)
小智 9
这是因为之后charset=utf8应该没有空格application/json.那会很好.像它一样使用它application/json;charset=utf-8
如果您正在使用AJAX jQuery请求,这是必须申请的。如果不是,它会抛出你的415错误。
dataType: "json",
contentType:'application/json'
Run Code Online (Sandbox Code Playgroud)
如果您在 React RSAA 中间件或类似软件中获得此信息,请添加标头:
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(model),
Run Code Online (Sandbox Code Playgroud)