2011-07-05 91 views
2

我使用ASIHTTPRequest來聯繫API,問題是它返回的是HTML而不是JSON,我不知道爲什麼。一切都一直工作了好幾個星期,我似乎無法弄清楚什麼已經打破..ASIHTTPRequest返回HTML而不是JSON

奇怪的是做一個瀏覽器或postie完全相同的請求返回正確的JSON響應,但是當我做請求通過ASIHTTPRequest這些都是響應頭,我得到:

"Cache-Control" = "private, max-age=0, must-revalidate"; 
    Connection = "keep-alive"; 
    "Content-Encoding" = gzip; 
    "Content-Type" = "text/html; charset=utf-8"; 
    Date = "Tue, 05 Jul 2011 21:11:10 GMT"; 
    Etag = "\"e467792713ac4124f055c1719f4ea6c2\""; 
    Server = "nginx/0.7.65"; 
    Status = "200 OK"; 
    "Transfer-Encoding" = Identity; 
    "X-Runtime" = 1; 

和HTML(這應該是JSON)..

<div id="universal_meta" logged_in_user_id="removed" style="display:none"></div> 
<div id="meta" screen="projects" logged_in_as="removed"></div> 
<h1>9 projects with 50 open issues</h1> 
<ul class="biglinks progressbars"> 
etc... 

這裏是用來做請求的代碼..

NSURL *url = [NSURL URLWithString:path]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

if(secure){ 
     [request setUsername:self.username]; 
     [request setPassword:self.password]; 
} 

[request setDelegate:self]; 
[request setDidFinishSelector:@selector(requestDone:)]; 
[request setDidFailSelector:@selector(requestWentWrong:)]; 
[request setDownloadDestinationPath:destination]; 

[[self queue] addOperation:request]; //queue is an NSOperationQueue 

我已經三重檢查了所有的登錄細節/網址,一切正常,我真的很感謝任何幫助,因爲我完全失去了。

-

更新:

燈塔承認關於他們一邊頭的錯誤。等待他們的解決方案。

+1

您可以使用某種客戶端工具作爲HTTPClient http://ditchnet.org/httpclient/來檢查您的服務器端是否一切正常 –

回答

6

您是否檢查使用您的瀏覽器發送的標頭是否與通過代碼發送請求時相同?

尤其是您是否嘗試將「Accept」標頭添加到您的請求中以定義您接受json Content-Type?

[request addRequestHeader:@"Accept" value:@"application/json"]; 
+0

我曾嘗試設置內容類型但不接受Accept頭,將給它是一個嘗試! – Alex

+0

如果「Accept」標題沒有解決您的問題,我建議您仍然將您的瀏覽器發送的其他標題與您的代碼發送的標題進行比較。即使您可以使用wireshark,大多數瀏覽器也允許您檢查文檔的HTTP標頭;在基於WebKit的瀏覽器(Chrome,Safari)中,您可以右鍵單擊您的頁面並選擇「檢查元素」,然後在網絡窗格中選擇標識您的HTML頁面的行(可能是唯一的一行)並檢查其「標題」標籤。 – AliSoftware

+0

我會調查進一步看着頭,設置接受頭沒有伎倆 – Alex

1

嘗試使用像Wireshark的或charlesproxy一個工具來比較從您的瀏覽器/ postie工作請求,並將它們與來自ASIHTTPRequest非工作要求 - 一旦你發現有什麼不同,應該很容易解決。

AliSoftware的建議是你會看到的最可能的差異之一,但也有可能還有其他的東西。