Вопрос

Я хотел бы задать запрос сообщения на заданный адрес, пусть будет, например, будет

http://staging.myproject.com/products.xml?

Для запросов сообщений я создал универсальный метод:

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

Но сервер вернул сообщение об ошибке.

Кто -нибудь знает, как проанализировать адрес

http://staging.myproject.com/products.xml?

Чтобы использовать его с приведенным выше методом? Какая часть 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;
}

url = http://staging.myproject.com/products.xml

параметры:

("Продукт [название], "Titletest"),

("product[content]", "TestContent"),

(product[price], "12.3"),

("tags", "aaa,bbb")

Другие советы

Похоже, вы запутаете параметры запроса URL, такие как продукт [цена] = 12,3 с заголовками запросов HTTP. Использование SetRequestHeader () предназначено для установки заголовков HTTP-запроса, которые являются метадатами, связанными с любым HTTP-запросом.

Чтобы установить параметры запроса, вы должны добавить их на URL -адрес после «?» и urlencoded, как в вашем примере URL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top