从HttpClient PostMethod获得整个响应

时间:2013-09-23 11:03:44

标签: java http-post httpclient httpresponse

我按照以下方式制作一个post方法:

try {
            HttpClient client = new HttpClient();
            PostMethod method = new PostMethod(VERIFY_PAYMENT_ACTIONURL);

            // key is the parameter
            // MERCHANT_KEY is the value
            method.addParameter("key", MERCHANT_KEY.trim());
            method.addParameter("command", VERIFY_PAYMENT_COMMAND.trim());
            method.addParameter("hash", hash);
            method.addParameter("var1", transactionID);
            method.addParameter("salt", ALGORIHTM_SHA512_SALT_KEY.trim());

            int statusCode = client.executeMethod(method);

        } catch (Exception e) {
            e.printStackTrace();
        }

这很好用,我得到200作为statusCode,因为该方法是成功的。我想获得整个响应,因为我必须根据返回的响应做更多的功能。

来自服务器的响应是如下数组:

array('status' => '1',
'msg' => 'Transaction Fetched Successfully',
'transaction_details' =>
array(
unknown)
)
);

我必须得到值from the response like msg etc

所以我的问题是如何检索从post call

返回的响应对象

请有人帮助我...

2 个答案:

答案 0 :(得分:4)

使用以下任何一项:

byte[] data = method.getResponseBody();
String text = method.getResponseBodyAsString();
InputStream is = method.getResponseBodyAsStream();

处理完内容后,请不要忘记致电method.releaseConnection()(特别是当您使用method.getResponseBodyAsStream()时)!

答案 1 :(得分:3)

将您的HttpClient更改为org.apache.http.client.HttpClient界面。

HttpClient httpClient = new DefaultHttpClient();
..
HttpResponse response = httpClient.execute(...);

在内部响应对象中,您将找到所需内容。