2011-03-15 48 views
2

我厌倦了这一点。总是当我使用普通套接字从C/C++程序进行HTTP GET查询时,我得到了301永久移动的信息。通常我会使用libcURL,但在这种情况下,我不想添加另一个库,我只需要从一个固定服务器下载一个平面标识文件。C++ HTTP总是301使用套接字

这是我当前的查询:

GET /game/getversion.jsp?user=nightcracker&password=yeahright&version=12 HTTP/1.1\r\n 
Connection: close\r\n 
Host: www.minecraft.net\r\n 
Accept-Encoding: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n 
\r\n 

我已经尝试了一切,一切都只是被这个有趣的消息回答:

HTTP/1.1 301 Moved Permanently 
Server: nginx/0.6.32 
Date: Tue, 15 Mar 2011 02:18:11 GMT 
Content-Type: text/html 
Content-Length: 185 
Connection: close 
Location: http://www.minecraft.net/game/getversion.jsp?user=nightcracker&password=yeahright&version=12 

<html> 
<head><title>301 Moved Permanently</title></head> 
<body bgcolor="white"> 
<center><h1>301 Moved Permanently</h1></center> 
<hr><center>nginx/0.6.32</center> 
</body> 
</html> 

我记得此问题之前,我之前ragequitted。现在我想解决这个该死的肛交。那么告诉我,为什么我的所有HTTP查询总是会回馈301?

回答

3

好吧,除了接受编码的问题,查询是好的。问题在于我在套接字代码中解析为“minecraft.net”而不是“www.minecraft.net”。 RAAAAH。固定。

0

我看不到任何明显的错误,因为重定向的URI看起来与原始的GET请求URI相同,所以我建议下载命令行curl并以冗长模式针对同一个目标运行。也许它会在它的输出中显示出一些可以指引你正确方向的东西。有可能这是一个配置错误的服务器或者写得不好的JSP,所以记住这一点。

0

我不知道这是不是你有我的世界服务器上的问题(我没有一个帐户),但

Accept-Encoding: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n 

到底是什么呢?可能在请求去头字段包括

  • Accept: MIME类型(例如,你有什么就有什么)
  • Accept-Charset:字符集(如utf-8
  • Accept-Encoding:编码(例如gzip
  • Accept-Language:语言(如en

你似乎在混合起来。

+0

更改接受编码接受修复没有任何东西,但它是不正确的。 – orlp 2011-03-15 02:41:07

0

那么,服务器将客户端重定向到另一个位置。你只需要发出另一个 要求回来在3XX输入反应

哎呀意识到重定向位置是一样的,原始的URI的“位置”报头中的URL。是否可以在浏览器中使用此URL?如果是这样,您可以尝试在包含浏览器发送的相同用户代理的请求中添加用户代理标头。