当我尝试连接到URL时,为什么会收到“HTTP版本不支持”的回复?

时间:2013-01-12 09:39:16

标签: java url tomcat httpresponse httpurlconnection

以下代码段尝试连接到网址。该URL还会发送名为FileNames的参数。但是,当我运行此代码段时,我总是得到HTTP Version Not Supported回复。可能是什么原因?

try {
  URL url = new URL(AddressInformation.clientAddressToSendFileNames + URLEncoder.encode(list.toString(), "UTF-8")); // STATEMENT-1
  HttpURLConnection connection = (HttpURLConnection) url.openConnection();

  if(connection.getResponseCode() == 200) {
    // File names sent to the client that requested it
    System.out.println("File names sent");
  } else {
     // Error : While trying to send the file names
     System.out.println("Unable to send file names");
     System.out.println("RESPONSE CODE ------->>>>" + connection.getResponseMessage());
   }
} catch(Exception exc) {
   exc.printStackTrace();
  }

在STATEMENT-1中,AddressInformation.clientAddressToSendFileNames对应

http://localhost:8084/D Nappster/ReceiveFileNames?FileNames=

我正在运行Tomcat 7.

2 个答案:

答案 0 :(得分:3)

您的网址似乎无效(其中包含空格),但网址构造函数未检测到该网址。

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

URI uri = new URI("http", null, "thehost", theport, "thepath", "thequery", null);
URL url = uri.toURL();

当然,这需要更改AddressInformation

有关详细信息,请参阅Javadoc

答案 1 :(得分:1)

好吧,就我而言,我解决了这个问题,在httpConnection.getResponseCode()语句之前在我的url中执行替换:用%20替换空格。

例如:

String url = "http://localhost:8080/Service/methodName?imagem=MY IMAGE NAME";
url = url.replace(" ", "%20");

更换后,网址将如下所示:

http://localhost:8080/Service/methodName?imagem=MY%20IMAGE%20NAME

为了测试它,请尝试将网址直接放入浏览器。