URL编码带有换行符的文本在java中

时间:2013-01-11 13:28:40

标签: java httprequest urlencode

所以我想要使用Apache Http Client在Http POST请求中发送ArrayList StringString个对象。

我现在正在做的是将List对象连接到新的System.getProperty("line.separator"),然后将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); 连接到换行符。 但是我收到服务器的错误回复,告诉我网址格式错误。 在此先感谢您的帮助!

{{1}}

3 个答案:

答案 0 :(得分: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

放置您的网址..:)

答案 1 :(得分:0)

似乎NL你的意思是换行符。相反,在将所有字符串合并并使用\n而不是NL之后,使用URLEncoder对字符串进行编码。另请检查调试中是否正在传递URL。

答案 2 :(得分:0)

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

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

这是基于我刚读完URI类的JavaDoc的5分钟。您可以通过放置代理或嗅探器并查看标头的有效负载是什么来测试这一点。