2011-12-30 162 views
0

WebService能夠以XML,純文本和JSon提供響應。如何讓JSON響應HTTP請求

我可以在XML中成功獲取響應。 我的擔心是,如何以JSon格式(不是XML或純文本)獲得響應。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    SBJsonParser *parser = [[SBJsonParser alloc] init]; 
    NSMutableArray *array = [parser objectWithString:responseString error:nil]; 

    NSString *success = [array valueForKey:@"Successful"]; 
    NSString *token = [array valueForKey:@"Token"]; 
} 

上面是處理響應(我確實假設JSon,但它是XML)的代碼。 因此,該應用程序崩潰。

下面是我得到的性反應:

<AuthenticatedUser xmlns="http://schemas.datacontract.org/2004/07/XYZCOMPANY.ABC.DataContracts.Mobile" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ErrorMsg i:nil="true"/><Successful>true</Successful><Token>MHlc8yKBgghjkfPHZ2oOvabvMWA=</Token></AuthenticatedUser>

+0

Refered它,但它給我的性反應中的XML。我想用JSon格式獲取它。 – viral 2011-12-30 13:00:51

+2

那麼你必須給我們更多的信息,舔哪個webservice?只是說有些事情可以解決問題,不容易解決。我知道某些webservice查看HTTP請求的accept頭,而其他的請求使用GET參數來返回JSON。 – rckoenes 2011-12-30 13:17:43

+0

@rckoenes:編輯。 – viral 2011-12-30 13:38:02

回答

1

如果您沒有碰到錯誤的端點,您可能需要將http accept頭設置爲「application/json」,如@rckoenes所述。你也可以嘗試使用CURL甚至是你的網頁瀏覽器來查看服務是否在運行。

這裏是它的工作對我來說,要求通過SOAPUI創建一個本地JSON服務代碼:

NSURLRequest *request = [[NSURLRequest alloc] 
         initWithURL: [NSURL URLWithString:SERVERURL] 
         cachePolicy: NSURLRequestReloadIgnoringLocalCacheData 
         timeoutInterval: 10]; 

NSURLConnection *connection = [[NSURLConnection alloc] 
         initWithRequest:request 
         delegate:self 
         startImmediately:YES]; 
if(!connection) { 
     DLog(@"connection failed"); 
} else { 
     DLog(@"Connection succeeded"); 

} 
+0

像魔術一樣工作:)非常感謝。 – viral 2011-12-31 05:21:08

0

取決於web服務是如何寫的......

http://davidwalsh.name/web-service-php-mysql-xml-json

+0

我正在談論的Web服務正在給我XML響應。它也給JSon(使用phoneGap的jQuery),我正在嘗試製作Native iPhone App。所以,可以以JSon格式響應請求的任何特定方法。 – viral 2011-12-30 13:10:38

-1

在應用程序中導入JSON框架。 Refer this

+0

已經被引用。它給了我XML格式的響應。 – viral 2011-12-30 13:16:16