Postmethod: Как сделать запрос на заданный адрес?
-
19-09-2019 - |
Вопрос
Я хотел бы задать запрос сообщения на заданный адрес, пусть будет, например, будет
Для запросов сообщений я создал универсальный метод:
private String postMethod(String url, HashMap<String, String> headers, String encodedAuthorizationString) throws HttpException, IOException {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
post.setRequestHeader("Authorization", encodedAuthorizationString);
if(headers != null && !headers.isEmpty()){
for(Entry<String, String> entry : headers.entrySet()){
post.setRequestHeader(new Header(entry.getKey(), entry.getValue()));
}
}
client.executeMethod(post);
String responseFromPost = post.getResponseBodyAsString();
post.releaseConnection();
return responseFromPost;
}
где заголовки представляют пары (ключ, значение), например («Продукт [заголовок]», «titletest»). Я попытался использовать метод, позвонив по Postmethod ("http: //staging.myproject.com.products.xml", Заголовки," XXX "); где заголовки включали пары
("Продукт [название], "Titletest"),
(«Продукт [контент]», «TestContent»),
(Продукт [цена], "12,3"),
("Теги", "AAA, BBB")
Но сервер вернул сообщение об ошибке.
Кто -нибудь знает, как проанализировать адрес
Чтобы использовать его с приведенным выше методом? Какая часть URL? Правильно ли установлены параметры?
Спасибо.
Решение
Я нашел проблему:
private String postMethod(String url, HashMap<String, String> headers, String encodedAuthorizationString) throws HttpException, IOException {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
post.setRequestHeader("Authorization", encodedAuthorizationString);
if(headers != null && !headers.isEmpty()){
for(Entry<String, String> entry : headers.entrySet()){
//post.setRequestHeader(new Header(entry.getKey(), entry.getValue()));
//in the old code parameters were set as headers (the line above is replaced with the line below)
post.addParameter(new Header(entry.getKey(), entry.getValue()));
}
}
client.executeMethod(post);
String responseFromPost = post.getResponseBodyAsString();
post.releaseConnection();
return responseFromPost;
}
параметры:
("Продукт [название], "Titletest"),
("product[content]", "TestContent"), (product[price], "12.3"), ("tags", "aaa,bbb")
Другие советы
Похоже, вы запутаете параметры запроса URL, такие как продукт [цена] = 12,3 с заголовками запросов HTTP. Использование SetRequestHeader () предназначено для установки заголовков HTTP-запроса, которые являются метадатами, связанными с любым HTTP-запросом.
Чтобы установить параметры запроса, вы должны добавить их на URL -адрес после «?» и urlencoded, как в вашем примере URL.