Я предлагаю использовать то, что проще всего, потому что именно в этом и заключается REST. Ниже приведен фрагмент кода, как я делаю пост. Я знаю, что вы не искали код специально, но API ниже (httpClient) прекрасно работает. Затем вы декодируете его, используя инструменты, которые мы всегда использовали кодерами (request.getParameter()
). Я считаю, что именно это отличает REST от SOAP. Не усложняй! Используйте HTTP!
public void testHttpClient() {
PostMethod pMethod = null;
pMethod = new PostMethod("...url...");
NameValuePair[] data = {new NameValuePair("activeFlag", "yes"), new NameValuePair("custCode", "B010"), new NameValuePair("comments", "mark is cool")};
pMethod.setRequestBody(data);
this.makeCall(pMethod);
}
private String makeCall(HttpMethod method) {
String response = null;
HttpClient client = new HttpClient();
client.getParams().setAuthenticationPreemptive(true);
client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(this.logon, this.pass));
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
method.getParams().setIntParameter(HttpMethodParams.SO_TIMEOUT, 5000);
try {
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
String aLine = null;
StringBuffer sb = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
while ((aLine = in.readLine()) != null) {
sb.append(aLine.trim());
System.out.println(aLine);
}
in.close();
response = sb.toString();
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
method.releaseConnection();
}
return response;
}