0

所以我有一个ArrayList对象String,我想使用 Apache Http 客户端在 Http POST 请求中发送。

我现在正在做的是将 List 对象连接到一个新的String每个对象,然后是System.getProperty("line.separator")一个换行符。但是我从服务器收到了错误的响应,告诉我的 URL 格式不正确。在此先感谢您的帮助!

ArrayList<String> episodeList
String episodesAsString = "";

    for(String s : episodeList)     
            episodesAsString = episodesAsString.concat(s + NL);

        URI uri = new URI(
                "https", 
                "my.domain.com", 
                "/path/add?this=123456&application=myApp&event=myEvent&description=" + episodesAsString,
                null);


    HttpClient client = new DefaultHttpClient();
    HttpPost request = new HttpPost(uri);
    HttpResponse response = client.execute(request);
4

3 回答 3

0

我认为URI是问题所在。即使我认为您可以使用它构建正确的 URL,但您在主机名之前缺少“//”。我以您的为例,我相信该请求将:

https:my.domain.com/path/addthis=123456&application=myApp&event=myEvent&description=XXX

这是基于我刚刚花了 5 分钟阅读 URI 类的 JavaDoc。您可能可以通过打开代理或嗅探器并查看标头的有效负载的样子来测试这一点。

于 2013-01-11T14:00:07.467 回答
0

在您的情况下,您没有发送POST数据。问题可能出在错误的 URL 上。

尝试这个:

String strUrl = "http://localhost:7001/RESTFUL_Tutorial/rest/hello/test1/test naveen kumar/test pwd";

URL url = new URL(strUrl);
// for getting URI
URI urlinfo = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
// for getting URL
url = urlinfo.toURL();

为了更好地使用URLEncoder

放置您的网址.. :)

于 2013-01-11T13:35:15.440 回答
0

你的意思似乎NL是换行符。而是在连接所有字符串并使用\n而不是 NL 之后,使用URLEncoder对字符串进行编码。还要检查是否在调试中错误地传递了 URL。

于 2013-01-11T13:39:09.907 回答