1

我正在使用 Commons HttpClient 发送一个发布请求以及一些字符串内容作为参数。以下是我的代码:

    // obtain the default httpclient
    client = new DefaultHttpClient();

    // obtain a http post request object
    postRequest = new HttpPost(stanbolInstance);
    postRequest.setHeader("Accept", "application/json");

    // create an http param containing summary of article
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("data", content));

    try {
        // add the param to postRequest
        postRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        // obtain the response
        response = client.execute(postRequest);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

在这里,stanbolInstance 是:http://dev.iks-project.eu:8081/enhancer 它不起作用。以下是例外情况:

Problem accessing /enhancer. Reason:
<pre>    The parsed byte array MUST NOT be NULL!</pre></p><h3>Caused by:</h3><pre>java.lang.IllegalArgumentException: The parsed byte array MUST NOT be NULL!

以下是有效的 cURL 等效项:

curl -X POST -H "Accept: text/turtle" -H "Content-type: text/plain" --data "The Stanbol enhancer can detect famous cities such as Paris and people such as Bob Marley." http://dev.iks-project.eu:8081/enhancer

帮助!

4

1 回答 1

2

我认为您以错误的方式放置内容。

代替:

 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("data", content));

    try {
        // add the param to postRequest
        postRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

postRequest.setEntity(new StringEntity(content));
于 2013-07-11T18:46:09.300 回答