2015-09-04 101 views
2

对不起,应该很容易的事情。我的GET请求有什么问题?

我有这个HTTP GET请求:

GET /ip HTTP/1.1 
Host: httpbin.org 
Connection: close 
Accept: */* 
User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1) 

当我通过我的ESP8266发送该请求,则返回404错误:

HTTP/1.1 404 Not Found 
Date: Fri, 04 Sep 2015 16:34:46 GMT 
Server: Apache 
Content-Length: 1363 
X-Frame-Options: deny 
Connection: close 
Content-Type: text/html 

但是当我(和你)去http://httpbin.org/ip它完美的作品!

出了什么问题?

详情

我构建在Lua我的要求:

conn:on("connection", function(conn, payload) 
    print('\nConnected') 
    req = "GET /ip" 
    .." HTTP/1.1\r\n" 
    .."Host: httpbin.org\r\n" 
    .."Connection: close\r\n" 
    .."Accept: */*\r\n" 
    .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n" 
    .."\r\n" 
    print(req) 
    conn:send(req) 
end) 

如果我用另一台主机(given is this example)工作原理:

conn:on("connection", function(conn, payload) 
    print('\nConnected') 
    conn:send("GET /esp8266/test.php?" 
    .."T="..(tmr.now()-Tstart) 
    .."&heap="..node.heap() 
    .." HTTP/1.1\r\n" 
    .."Host: benlo.com\r\n" 
    .."Connection: close\r\n" 
    .."Accept: */*\r\n" 
    .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n" 
    .."\r\n") 
end) 
+0

你使用任何IP过滤?这意味着基于远程IP地址的预期结果不同? – Mike

+0

显示如何构建请求?你有网络捕获请求吗? –

+0

也许服务器拒绝特定的'User-Agent'? – hjpotter92

回答

0

这是您的要求的服务器没有按”喜欢。 这将完成这项工作:

GET http://httpbin.org/ip HTTP/1.1 
Host: httpbin.org 
2

你确实连接到httpbin.org吗?或者别的地方?

我刚刚尝试通过输入到telnet发出您的请求,它为我工作。但服务器响应是nginx,而你的例子显示了apache。

$ telnet httpbin.org 80 
Trying 54.175.219.8... 
Connected to httpbin.org. 
Escape character is '^]'. 
GET /ip HTTP/1.1 
Host: httpbin.org 
Connection: close 
Accept: */* 
User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1) 

HTTP/1.1 200 OK 
Server: nginx 
Date: Wed, 07 Oct 2015 06:08:40 GMT 
Content-Type: application/json 
Content-Length: 32 
Connection: close 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Credentials: true 

{ 
    "origin": "124.149.55.34" 
} 
Connection closed by foreign host. 

当我试着使用一些其他的URI另一个请求,迫使404响应,我看到:

HTTP/1.1 404 NOT FOUND 
Server: nginx 
Date: Wed, 07 Oct 2015 06:12:21 GMT 
Content-Type: text/html 
Content-Length: 233 
Connection: close 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Credentials: true 

这又是什么样,你说你从httpbin.org得到的回应。

1
http.get("http://httpbin.org/ip", nil, function(code, data) 
    if (code < 0) then 
     print("HTTP request failed") 
    else 
     print(code, data) 
    end 
end) 

http.post('http://httpbin.org/post', 
    'Content-Type: application/json\r\n', 
    '{"hello":"world"}', 
    function(code, data) 
     if (code < 0) then 
      print("HTTP request failed") 
     else 
      print(code, data) 
     end 
    end) 

请参阅参考文献here

相关问题