2011-03-15 47 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?如果是這樣,您可以嘗試在包含瀏覽器發送的相同用戶代理的請求中添加用戶代理標頭。