Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会得到';不支持HTTP版本';当我尝试连接到URL时回复?_Java_Url_Tomcat_Httpresponse_Httpurlconnection - Fatal编程技术网

Java 为什么我会得到';不支持HTTP版本';当我尝试连接到URL时回复?

Java 为什么我会得到';不支持HTTP版本';当我尝试连接到URL时回复?,java,url,tomcat,httpresponse,httpurlconnection,Java,Url,Tomcat,Httpresponse,Httpurlconnection,以下代码段尝试连接到url。url还发送一个名为文件名的参数。但是当我运行这个代码段时,我总是得到一个不支持的HTTP版本reply。原因可能是什么 试试看{ URL URL=新URL(AddressInformation.clientAddressToSendFileNames+URLEncoder.encode(list.toString(),“UTF-8”);//语句-1 HttpURLConnection connection=(HttpURLConnection)url.openCon

以下代码段尝试连接到url。url还发送一个名为
文件名
的参数。但是当我运行这个代码段时,我总是得到一个不支持的
HTTP版本
reply。原因可能是什么

试试看{
URL URL=新URL(AddressInformation.clientAddressToSendFileNames+URLEncoder.encode(list.toString(),“UTF-8”);//语句-1
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
if(connection.getResponseCode()==200){
//发送到请求它的客户端的文件名
System.out.println(“发送的文件名”);
}否则{
//错误:尝试发送文件名时出错
System.out.println(“无法发送文件名”);
System.out.println(“响应代码------->>>>”+connection.getResponseMessage());
}
}捕获(异常exc){
exc.printStackTrace();
}
在语句-1中,
AddressInformation.clientAddressToSendFileNames
对应于

http://localhost:8084/D Napster/ReceiveFileName?文件名=


我正在运行Tomcat 7

您的URL似乎无效(其中包含空格),但URL构造函数没有检测到这一点

相反,您可以使用
URI
的构造函数,它将为您正确编码,而无需担心,然后将其转换为URL:

URI uri = new URI("http", null, "thehost", theport, "thepath", "thequery", null);
URL url = uri.toURL();
当然,这需要更改您的
地址信息


有关更多详细信息,请参阅。

在我的例子中,在httpConnection.getResponseCode()语句之前,我在url中进行了一次替换,解决了这个问题:将空格替换为%20

例:

stringurl=”http://localhost:8080/Service/methodName?imagem=MY 图像名称”;

url=url.replace(“,“%20”)
另一端发送的完整响应是什么?@fge我不明白youURL可能是问题所在。请尝试全部编码。您注意到URL中
D
napster
之间的空格请尝试将空格编码为
%20
Try
http://localhost:8084/D%20Nappster/ReceiveFileNames?FileNames=
此URI是否正确:
URI-URI=new-URI(“http”,null,“localhost”,8084,AddressInformation.clientAddressToSendFileNames,“FileNames=“+list.toString(),null)
?其中FileNames=foo是一个查询字符串,字符串
AddressInformation.clientAddressToSendFileNames‌​
对应于D Nappster/ReceiveFileName如果您的
列表实际上是一个
列表
,则不会这样做,因为
。toString()
不会输出查询字符串中所需的格式。您需要有一个实用函数来为您构建正确的查询字符串(无需转义任何内容,因为,
URI
同样为您做了这件事。此外,您需要在
地址信息之前添加
/
。clientAddressToSendFileNames
@saplingPro快照中显示的所有内容似乎都是正确的,除了
D
Napster
之间的空格!我在t中注意到了这一点。)他在上面评论说,即使是
D%20napster
也会返回未找到的代码。这个答案建议的自动编码将
%20
置于
D
napster
之间。在浏览器中运行此应用程序。浏览器如何显示URL?然后尝试该URL