Apache HttpClient nie wie nic o JSON, więc musisz osobno skonstruować JSON. Aby to zrobić, polecam sprawdzić prostą bibliotekę JSON-java z json.org . (Jeśli „JSON-java” Ci nie odpowiada, w serwisie json.org znajduje się duża lista bibliotek dostępnych w różnych językach).
Po wygenerowaniu JSON możesz użyć czegoś takiego jak poniższy kod, aby go POST
StringRequestEntity requestEntity = new StringRequestEntity(
JSON_STRING,
"application/json",
"UTF-8");
PostMethod postMethod = new PostMethod("http://example.com/action");
postMethod.setRequestEntity(requestEntity);
int statusCode = httpClient.executeMethod(postMethod);
Edytować
Uwaga - powyższa odpowiedź, zgodnie z pytaniem, dotyczy Apache HttpClient 3.1. Jednak, aby pomóc każdemu, kto szuka implementacji dla najnowszego klienta Apache:
StringEntity requestEntity = new StringEntity(
JSON_STRING,
ContentType.APPLICATION_JSON);
HttpPost postMethod = new HttpPost("http://example.com/action");
postMethod.setEntity(requestEntity);
HttpResponse rawResponse = httpclient.execute(postMethod);
NameValuePair
prostu dodajesz parametr żądania, nie wysyłasz żadnego JSON w swoim kodzie. Jaką strukturę JSON oczekuje usługa, jakie dane ma przesłać? SzukaszpostMethod.setRequestEntity()
zStringRequestEntity
plikiem zawierającym JSON.