2014-01-08 24 views
0

目前我有一個字符串,我想POST到一個URL。JSON數據NULL特殊字符「&」

除非遇到像「&」這樣的特殊字符,否則它工作得很好。它會發布其後的其他數據。例如,我有品牌的文本字符串「張&紅」,通過選擇模型值取決於品牌文本正在解析URL作爲

post=[NSString stringWithFormat:@"http://moneytree.com.au/rest-webservice/rest/&Brand=%@",StrbrandSelect1]; 

NSURL *url; 
url = [NSURL URLWithString:[post 
          stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSMutableURLRequest *RequestSubject=[[NSMutableURLRequest alloc]init]; 

[RequestSubject setURL:url]; 
[RequestSubject setHTTPMethod:@"POST"]; 
NSLog(@"RequestSubject %@",RequestSubject); 
Typedata1 = [NSURLConnection sendSynchronousRequest:RequestSubject 
            returningResponse:Nil error:Nil]; 
if (RequestSubject) 
{ 
    NSDictionary *Dictjson = [NSJSONSerialization 
           JSONObjectWithData:Typedata1 
           options:kNilOptions 
           error:nil]; 

    NSLog(@"The JSON outPut is:%@",Dictjson); 

    NSLog(@"The Array Count is: %d",[Dictjson count]); 

但陣列數爲:0

選擇數據取決於品牌「Chang & hong」

我需要的輸出數據取決於品牌字符串模型文本 - 「等離子」和「LCD」。

請幫幫我。

+0

您是否嘗試在瀏覽器中手動轉到該地址並查看彈出的內容?網絡服務是否屬於你(你是否編碼?) –

+0

這個鏈接導致我無處可去,我想你忘了替換%@ –

+0

@YoavSchwartz:你可以在代碼中編輯。謝謝。 –

回答

0

當您發送一個URL時,有些字符是「不允許」或具有其他含義。例如,每個空間應該是%20,例如「&」符號應該是%26,因爲否則它會被服務器解釋爲進入下一個變量,就像您不會使用「/」符號一樣,因爲瀏覽器會將它誤認爲是到其他地方的鏈接。如果您發送品牌= Chang%20 &%20hong,服務器會將&之後的部分視爲新變量。那爲什麼你用Chang%20%26%20hong取代這個。

使用您所使用的網址又如:

?CountryName=Australia&appliance=Television&Brand=Chang%20%26%20hong 

文字「&」的招牌是使用爲服務器,分開不同的變量在這種情況下:國家或地區名稱,家電和品牌。當您在消息中使用文字'&'時,您認爲%20hong是一個新變量。

+0

:我無法直接在編碼中添加URL。 (如果直接添加數組爲空)。對於EX:如果用戶選擇了chang&hong品牌,該模型會顯示出品牌選擇,因此我已經編碼了NSUTF8StringEncoding。請幫助我如何以編碼方式取代它。 –

+0

你可以發佈變量「url」的nslog嗎?因爲使用stringByAddingPercentEscapesUsingEncoding應該已經工作了,還可以嘗試用%26手動替換StrbrandSelect1變量中的&並查看它是否有效(我知道,它是一個bandaid不是解決方案,它只是爲了確定問題) –

+0

我無法接收任何NSlog數據。但輸出將取決於chang&hong = {「parentkey」:[[{「Type」:「LCD(LED)」}]]}。如果我直接解析數據將成爲空。 –