1

У меня есть конечная точка HTTP DELETE. Я хочу передать некоторые заголовки, а точнее Content-Type=application/x-www-form-urlencoded. Также есть некоторые параметры, на основе которых на стороне сервера будет определено, какая запись должна быть удалена. И реализация сервера недоступна для меня.Передача параметров и заголовков с помощью Apache HttpDelete для веб-службы отдыха Android

Я использую apache HTTP client. Мой метод HTTP DELETE выглядит следующим образом:

private String doDelete(String url, Map<String,String> params, Map<String,String> headerMap){ 

    HttpClient httpClient = new DefaultHttpClient(httpParams); 
    HttpDelete httpDelete = new HttpDelete(httpRequestWrapper.getUrl()); 

    if(headerMap != null){ 
     for(String headerName : headerMap.keySet()){ 
      httpDelete.addHeader(headerName, headerMap.get(headerName)); 
     } 
    } 

    if(params != null){   
     for(String paramName : params.keySet()){ 
      httpParams.setParameter(paramName, params.get(paramName)); 
     } 
     httpDelete.setParams(httpParams); 
    } 

    HttpResponse httpResponse = httpClient.execute(httpDelete); 
    HttpEntity httpEntity = httpResponse.getEntity(); 
    String responseStr = getASCIIContentFromEntity(httpEntity); 
    return responseStr; 
} 

Проблема заключается в том, что я вижу (в режиме отладки), что параметры правильно передается в запросе удаления от моего конца. Но на конце сервера параметры пустые. Есть ли способ передать параметры & заголовков успешно?

Любая помощь приветствуется.

ответ

1

Передача заголовков через стенографию может вызвать проблемы.

С учетом вышеизложенного следует иметь в виду, что в соответствии с внедренным методом HttpDelete не принимает тело, поэтому наличие определенного заголовка Content-Type, связанного с вашим запросом, может вызывать помехи, запутывающие контейнер.

Попробуйте исключить заголовок из клиента, содержащего Content-Type, и посмотреть, устраняет ли это проблему.

EDIT AH !! Нашел вопрос! Метод setParams запутан. Согласно документации от HTTP Client 4.x

Предоставляет параметры, которые будут использоваться для обработки этого сообщения.

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

This SO article определяет подходящий подход к тому, что вы пытаетесь сделать.