3

我有一個iPad應用程序,它從UIWebView上的服務器罰款加載plist,但是當我嘗試從服務器獲取它作爲響應字符串時,它會返回http狀態碼400字符串作爲請求錯誤(invalid_request)。中東國家的http狀態代碼400

它只發生在中東國家。一位來自阿拉伯聯合酋長國的用戶證實了我向其發送特別版本進行測試的問題。應用程序返回狀態碼400,但plist在UIWebView上加載得很好。

我一直在嘗試2臺不同的服務器 - AWS服務器和另一臺託管在美國的服務器。對於這兩個服務器,它都提供相同的狀態碼。

任何人都可以提出建議,爲什麼它應該發生?

下面的代碼的一部分:

..... 
    ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease]; 
    [request addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"]; 
    [request addRequestHeader:@"Accept-Encoding" value:@"text/xml;charset=utf-8"]; 

    [request setRequestMethod:@"GET"]; 
    [request setDelegate:self]; 

    [request setDidFinishSelector: @selector(gotTheResponse:)]; 

    [request setDidFailSelector: @selector(requestFailed:)]; 
    [networkQueue addOperation: request]; 
    [networkQueue go]; 
.... 
+3

也許是審查? – vikingosegundo 2011-04-28 13:49:39

+0

你能指定國家嗎? – Ency 2011-04-28 14:16:09

+0

一個ISP控制着你可以訪問的網站,如果你指的這些國家中的一個不想讓用戶去說一個.com網站,那麼你不能對它做任何事情,因爲他們可以只返回一個400曾經擊中你的網站。 – Joe 2011-04-28 14:16:55

回答

0

我不知道這是否是問題或沒有,但此行:

[request addRequestHeader:@"Accept-Encoding" value:@"text/xml;charset=utf-8"]; 

是爲接受設置的值無效 - 我相信編碼頭。更常見的值將是「壓縮,gzip」,你不應該真的需要自己設置它。如果你想要服務器返回的text/xml文件,它應該放入一個「Accept」頭文件中 - 儘管你完全不需要它,這取決於服務器的設置。

在GET請求中使用Content-Type標頭也很少見,是否有添加該標頭的原因?

最後一種可能性是如果URL包含不尋常的字符,可能會導致任何代理服務器返回錯誤。