Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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
禁止使用URLConnection 403连接到java中的站点(用户代理无法修复)_Java_Wamp - Fatal编程技术网

禁止使用URLConnection 403连接到java中的站点(用户代理无法修复)

禁止使用URLConnection 403连接到java中的站点(用户代理无法修复),java,wamp,Java,Wamp,我在localhost上使用一个wamp服务器,有一个小型Java软件,它应该每周向我的网站发出一次用PHP编写的请求,以发送每周邮件。但是请求抛出一个IOException,表示返回了403。例外情况如下: Sending first mail at 11-8-2014 8:00. Sending mail. java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost/mailUn

我在localhost上使用一个wamp服务器,有一个小型Java软件,它应该每周向我的网站发出一次用PHP编写的请求,以发送每周邮件。但是请求抛出一个IOException,表示返回了403。例外情况如下:

Sending first mail at 11-8-2014 8:00.
Sending mail.
java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost/mailUnmanaged
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
        at java.net.URLConnection.getContent(Unknown Source)
        at com.zetup.resurs.weeklyMail.SendWeeklyMail$Task.run(SendWeeklyMail.java:89)
        at java.util.TimerThread.mainLoop(Unknown Source)
        at java.util.TimerThread.run(Unknown Source)
通过谷歌搜索,我发现在请求中设置用户代理可以解决这个问题。这对我来说并不重要

以下是我发送请求的部分:

URL url;    
try {
    url = new URL("http://localhost/mailUnmanaged");
} catch (MalformedURLException e) {
    e.printStackTrace();
    return;
}
try {
    System.out.println("Sending mail.");
    URLConnection conn = url.openConnection();
    conn.setRequestProperty( "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)" );
    conn.setRequestProperty("Host", url.getHost()); // I've tried without this
    conn.connect();
    System.out.println(conn.getContent().toString());
    lastTime.add(Calendar.WEEK_OF_YEAR, 1);
} catch (IOException e) {
    e.printStackTrace();
}
如果我复制url并将其粘贴到我的浏览器中,它就可以正常工作

编辑: 我有一个相当广泛的访问权限,可能会引起问题

编辑:更多测试
所以,我检查了Chrome发送的所有头文件,并在代码中设置了所有头文件,它仍然返回403。这开始变得奇怪了。

好的,我发现了问题。当我使用Windows 8时,用于连接到我的站点的IP是::1 127.0.0.1的IPv6版本。在我的httpd.conf中,我只允许来自IP::1的请求。我必须将127.0.0.1添加到允许的IP:s。我的新httpd.conf有:

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
#   onlineoffline tag - don't remove
    Order Deny,Allow
    Deny from all
    Allow from ::1
    Allow from 127.0.0.1

</Directory>

如果你用浏览器访问URL,它会工作吗?如果你用google.com替换localhost,输出是什么?@mtkFileNotFoundException@SiXOS,我相信你已经试过了。如果没有,请重试此。。新网址https://www.google.com;. 如果您这样做了,请忽略,似乎还有其他问题您需要提供用户名和密码,并且您的浏览器可能已经为您缓存了这些用户名和密码?