[英]HTTP PATCH request in Java
I am trying to make a HTTP PATCH request in Java, but despite my efforts this is not working.我正在尝试用 Java 发出 HTTP PATCH 请求,但尽管我努力了,但这还是行不通。 I am trying to PATCH a Json, here is my code:我正在尝试修补 Json,这是我的代码:
HttpResponse response = null;
BufferedReader rd = null;
StringBuffer result = new StringBuffer();
String line = "";
HttpClient httpclient = HttpClients.createDefault();
HttpPatch httpPatch = new HttpPatch("http://myURL");
JsonArrayBuilder Abuilder = Json.createArrayBuilder();
JsonObjectBuilder oBuilder = Json.createObjectBuilder();
for(int i=0;i<48;i++){
Abuilder.add(i+1);
}
oBuilder.add("date", "2016-09-08");
oBuilder.add("values",Abuilder);
JsonObject jo = Json.createObjectBuilder().add("puissance", Json.createObjectBuilder().add("curves",Json.createArrayBuilder().add(oBuilder))).build();
try{
//Execute and get the response.
StringEntity params =new StringEntity(jo.toString());
params.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httpPatch.setEntity(params);
response = httpclient.execute(httpPatch);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
while ((line = rd.readLine()) != null) {
System.out.println(line);
result.append(line);
}
}catch(Exception e){
}
When I execute this request, I get a当我执行这个请求时,我得到一个
"400 Error: The request has an invalid header name". “400 错误:请求的标头名称无效”。
When I execute this request using Postman, this is working fine.当我使用 Postman 执行此请求时,这工作正常。
I am quite new at HTTP requests so do not hesitate to ask if you need more details.我对 HTTP 请求很陌生,所以不要犹豫,问你是否需要更多细节。
StringEntity.setContentEncoding
is used to set the Encoding type , StringEntity.setContentEncoding
用于设置Encoding 类型,
You should use StringEntity.setContentType
to set the ContentType您应该使用StringEntity.setContentType
来设置ContentType
Problem-问题-
RestTemplate restTemplate = new RestTemplate();
restTemplate.patchForObject("http://localhost:8080/employee/1", requestBody, String.class);
Solution-解决方案-
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject("http://localhost:8080/employee/1?_method=patch", requestBody, String.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.