Frage

Ich möchte eine Postanfrage an eine bestimmte Adresse wieder aufnehmen, lassen Sie sie zum Beispiel sein

http://staging.myproject.com/products.xml?product?itle weibliche=titletest&product?content weibliche=TestContent&product?producte

Für Postanfragen habe ich eine universelle Methode erstellt:

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;
}

wobei Header Paare darstellen (Schlüssel, Wert), z. B. "Produkt [Titel], "Titletest"). Ich habe versucht, die Methode zu verwenden, indem ich Postmethode aufgerufen habe ("http: //staging.myproject.com.products.xml", Header," xxx "); wobei Header Paare enthalten

("Produkt [Titel], "Titletest"),

("Produkt [Inhalt], "TestContent"),

(Produkt [Preis], "12,3"),

("Tags", "AAA, BBB")

Der Server hat jedoch eine Fehlermeldung zurückgegeben.

Weiß jemand, wie man die Adresse analysiert?

http://staging.myproject.com/products.xml?product?itle weibliche=titletest&product?content weibliche=TestContent&product?producte

Um es mit der obigen Methode zu verwenden? Welcher Teil ist URL? Sind die Parameter korrekt eingestellt?

Vielen Dank.

War es hilfreich?

Lösung

Ich habe ein Problem gefunden:

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

Parameter:

("Produkt [Titel], "Titletest"),

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

(product[price], "12.3"),

("tags", "aaa,bbb")

Andere Tipps

Sie scheinen die URL -Abfrageparameter wie Produkt [Preis] = 12,3 mit HTTP -Anforderungsheadern zu verwechseln. Die Verwendung von setRequestheader () soll die HTTP-Anforderungsheader festlegen, die Meta-Data sind, die mit jeder HTTP-Anforderung verknüpft sind.

Um die Abfrageparameter festzulegen, sollten Sie sie nach einem "?" und urlencodiert, wie in Ihrer Beispiel -URL.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top