Java中的HTTP补丁请求

Java中的HTTP补丁请求,java,apache,request,httprequest,Java,Apache,Request,Httprequest,我正试图用Java发出HTTP补丁请求,但尽管我努力了,这还是不起作用。 我正在尝试修补Json,以下是我的代码: HttpResponse response = null; BufferedReader rd = null; StringBuffer result = new StringBuffer(); String line = ""; HttpClient httpclient = HttpClients.createDefault();

我正试图用Java发出HTTP补丁请求,但尽管我努力了,这还是不起作用。 我正在尝试修补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){

    }
HttpResponse响应=null;
BufferedReader rd=null;
StringBuffer结果=新的StringBuffer();
字符串行=”;
HttpClient HttpClient=HttpClients.createDefault();
HttpPatch HttpPatch=新的HttpPatch(“http://myURL");
JsonArrayBuilder Abuilder=Json.createArrayBuilder();
JsonObjectBuilder oBuilder=Json.createObjectBuilder();

对于(int i=0;i
StringEntity.setContentEncoding
用于设置编码类型


您应该使用
StringEntity.setContentType
设置ContentType

StringEntity。setContentEncoding
用于设置编码类型


您应该使用
StringEntity.setContentType
来设置ContentType问题-

RestTemplate restTemplate = new RestTemplate();
restTemplate.patchForObject("http://localhost:8080/employee/1", requestBody, String.class);
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject("http://localhost:8080/employee/1?_method=patch", requestBody, String.class);
解决方案-

RestTemplate restTemplate = new RestTemplate();
restTemplate.patchForObject("http://localhost:8080/employee/1", requestBody, String.class);
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject("http://localhost:8080/employee/1?_method=patch", requestBody, String.class);

问题-

RestTemplate restTemplate = new RestTemplate();
restTemplate.patchForObject("http://localhost:8080/employee/1", requestBody, String.class);
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject("http://localhost:8080/employee/1?_method=patch", requestBody, String.class);
解决方案-

RestTemplate restTemplate = new RestTemplate();
restTemplate.patchForObject("http://localhost:8080/employee/1", requestBody, String.class);
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject("http://localhost:8080/employee/1?_method=patch", requestBody, String.class);

您可以查看请求负载的标题名称吗?检查标题名称,并注意附加到其上的任何垃圾或特殊字符。大家好,谢谢您的帮助。Sheetal,当您谈到检查标题名称时,我不确定您在说什么,您是指我请求的标题吗?如果是,您知道怎么做吗?(有一个函数getHeaders(字符串名),但我不知道应该使用哪个字符串作为输入)您可以查看请求负载的标题名称吗?检查标题名称,并注意附加到其上的任何垃圾或特殊字符。大家好,谢谢您的帮助。Sheetal,当您谈到检查标题名称时,我不确定您在说什么,您是指我请求的标题吗?如果是,您知道怎么做吗?(有一个函数getHeaders(字符串名称),但我不知道应该使用哪个字符串作为输入)401可能您请求url需要登录Tanks Roman,实际上这是一个登录问题,我将从那里进行调查401可能您请求url需要登录Tanks Roman,确实这是一个登录问题,我将从那里进行调查