0

HttpURLConnection用来从 Java 访问服务器。

URL: http://clicks.pureleads.com/c/E1oTzCqNzcgtN8YfNs5wg25lxQ7X8*PEqjqks**E|l9gsgSg6ZyKU7FdR0WkUDvIZ2jgG9hhb1qfSlUJpaojsCMystWBEfw6EacQ4K)zd6CtREq0PA68Uj4rPqLEsBgQdK6pgV88epNw3LF7S3X4erNQmaF26N)47Eb8H9O58bmMrEwGTBJ*avyzVCGxuyuaAoqBkOBafBru3i44S*oP74Wu4toNaTW3onZrpV9qsIqsMb3kC9J2s4RDStFqTAzH0VPlO)ZI0SWtJAchAt76suO2vTJdu6WVynplETGZD4I6DvNiQ1CSnQtSE0G2ing((

对于编码 URL,我正在使用URLEncoder.encode(url, "UTF-8");

Encoded URL:
http://clicks.pureleads.com/c/E1oTzCqNzcgtN8YfNs5wg25lxQ7X8*PEqjqks**E%7Cl9gsgSg6ZyKU7FdR0WkUDvIZ2jgG9hhb1qfSlUJpaojsCMystWBEfw6EacQ4K)zd6CtREq0PA68Uj4rPqLEsBgQdK6pgV88epNw3LF7S3X4erNQmaF26N)47Eb8H9O58bmMrEwGTBJ*avyzVCGxuyuaAoqBkOBafBru3i44S*oP74Wu4toNaTW3onZrpV9qsIqsMb3kC9J2s4RDStFqTAzH0VPlO)ZI0SWtJAchAt76suO2vTJdu6WVynplETGZD4I6DvNiQ1CSnQtSE0G2ing((

当我尝试在浏览器中打开上述 URL 时,响应代码为OK(200). 从 Java 中,服务器返回response code 400.

代码片段:

URI uri = new URI("http", "clicks.pureleads.com","/c/E1oTzCqNzcgtN8YfNs5wg25lxQ7X8*PEqjqks**E|l9gsgSg6ZyKU7FdR0WkUDvIZ2jgG9hhb1qfSlUJpaojsCMystWBEfw6EacQ4K)zd6CtREq0PA68Uj4rPqLEsBgQdK6pgV88epNw3LF7S3X4erNQmaF26N)47Eb8H9O58bmMrEwGTBJ*avyzVCGxuyuaAoqBkOBafBru3i44S*oP74Wu4toNaTW3onZrpV9qsIqsMb3kC9J2s4RDStFqTAzH0VPlO)ZI0SWtJAchAt76suO2vTJdu6WVynplETGZD4I6DvNiQ1CSnQtSE0G2ing((",null);
String url = uri.toString();
serverAddress = new URL(url);
connection = (HttpURLConnection) serverAddress.openConnection();
connection.setConnectTimeout(2000);
connection.setReadTimeout(2000);
connection.connect();

还尝试了URLEncoder.encode(url,"UTF-8")对 URL 进行编码。

提前致谢。

4

2 回答 2

1

为我工作:

URI uri = new URI("http", "clicks.pureleads.com","/c/E1oTzCqNzcgtN8YfNs5wg25lxQ7X8*PEqjqks**E|l9gsgSg6ZyKU7FdR0WkUDvIZ2jgG9hhb1qfSlUJpaojsCMystWBEfw6EacQ4K)zd6CtREq0PA68Uj4rPqLEsBgQdK6pgV88epNw3LF7S3X4erNQmaF26N)47Eb8H9O58bmMrEwGTBJ*avyzVCGxuyuaAoqBkOBafBru3i44S*oP74Wu4toNaTW3onZrpV9qsIqsMb3kC9J2s4RDStFqTAzH0VPlO)ZI0SWtJAchAt76suO2vTJdu6WVynplETGZD4I6DvNiQ1CSnQtSE0G2ing((",null);
    String url = uri.toString();
    URL serverAddress = new URL(url);
    HttpURLConnection connection = (HttpURLConnection) serverAddress.openConnection();
    connection.setConnectTimeout(2000);
    connection.setReadTimeout(2000);
    connection.connect();

    InputStream inputStream = connection.getInputStream();

    String output = IOUtils.toString(inputStream);

字符串输出包含以下内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Refresh" content="1;URL='http://www.macys.com'">
<title></title>
</head>
<body onload='g();'>
<script type="text/javascript">
    var dest_url = "http://www.macys.com"
    var back_url = ""
    function g() {
        if (navigator.userAgent.indexOf("MSIE") != -1) {
           //The user has hit back button
           if (document.getElementById('final').value == 1) {
              document.getElementById('final').value = 0;
              //The ad opened in new window
              if (document.getElementById('hist').value == 0) {
                 self.location.replace(back_url);
              }
              //Ad opened in the same window
              else {
                 history.go(-1);
              }
           }
           else {
              //IE doesn't send referrer when used with replace
              var created_link = document.createElement("a");
              created_link.href = dest_url;
              document.body.appendChild(created_link);
              //set the back button variable and new window variable
              created_link.click(document.getElementById('final').value = 1,     document.getElementById('hist').value = history.length);
           }
        }
        else {
            if (document.images) {
                self.location.replace(dest_url);
            }
            else {
                self.location.href = dest_url;
            }
        }    
    }
</script>
<noscript><img src="noscript.gif"></noscript>
<form>
    <input type="hidden" name="u" value="0" id="final">
    <input type="hidden" name="h" value="-99" id="hist">
</form>
</body>
</html>
于 2012-07-04T11:18:00.030 回答
0

我从执行您的代码中得到 200 响应,也许您在代理或类似的后面?

于 2012-07-04T11:19:31.527 回答