2016-09-13 3 views
0

Я пытаюсь сделать запрос HTTP PATCH в Java, но, несмотря на мои усилия, это не работает. Я пытаюсь пропатчить JSon, вот мой код:HTTP PATCH запрос в Java

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){ 

    } 

Когда я выполняю эту просьбу, я получаю

"400 Error: The request has an invalid header name".

Когда я выполняю этот запрос, используя Почтальон, это работает отлично.

Я совершенно новый по HTTP-запросам, поэтому не стесняйтесь спрашивать, нужна ли вам дополнительная информация.

+0

вы можете посмотреть, чтобы заголовок имя запроса полезной нагрузки? –

+0

Проверьте имя заголовка и обратите внимание на любой нежелательный или специальный символ, добавленный к нему. –

+0

Привет, спасибо вам за помощь. Листовой, когда вы говорите о проверке имени заголовка, я не уверен, что понимаю, о чем вы говорите, вы имеете в виду заголовок моего запроса? Если да, знаете ли вы, как это сделать? (есть функция getHeaders (String name), но я не знаю, какую строку я должен использовать в качестве ввода) – Nefarious62

ответ

1

StringEntity.setContentEncoding используется для установки типаEncoding,

Вы должны использовать StringEntity.setContentType для установки ТипСодержимого

+0

Привет, Roman, если это изменение, я получаю ошибку «401» – Nefarious62

+0

401 Возможно, вы запрашиваете url need login –

+0

Спасибо Roman , действительно, это вопрос входа в систему, я буду исследовать оттуда – Nefarious62

Смежные вопросы