當我嘗試構建我的NSURL以打開另一個應用程序時,我一直在收到(null)
錯誤。帶有JSON的NSURL返回null
URL應該
ms-test-app://eventSourceId=evtSrcId&eventID=13675016&eventType=0&json={"meterresults":[{"clean":"2","raw":"2","status":"0"}]}
,但是當我嘗試建立我的網址,它總是空。
起初我認爲它與URL本身有關,但它與我從示例here中得到它是一樣的。
另一個想法是,IOS在JSON中的雙引號引起了一些問題,但我用%22
取代了它們,但這也不起作用。
下面是代碼,我在那裏建立的網址:
NSString *jsonString = [NSString stringWithFormat:@"{%22meterresults%22:[{%22clean%22:%22%@%22,%22raw%22:%22%@%22,%22status%22:%22%@%22}]}", cleanReadingString, rawReadingString, status];
NSLog(@"JSON= %@",jsonString);
//Send the result JSON back to the movilizer app
NSString *eventSourceId = @"evtSrcId";
NSString *encodedQueryString = [NSString stringWithFormat:@"?eventSourceId=%@&eventID=%d&eventType=0&json=%@",
eventSourceId, _eventId, jsonString];[NSCharacterSet URLQueryAllowedCharacterSet]]
NSString *urlStr = [NSString stringWithFormat:@"%@%@",
[_endpointUrls objectForKey:[NSNumber numberWithInt:(int)_selectedEndpoint]],
encodedQueryString];
NSURL *url = [NSURL URLWithString:urlStr];
我不知道我錯了,我會很高興,如果有人有任何想法。
在此先感謝。
您的代碼是否會引發任何警告/錯誤?因爲'NSString * encodedQueryString = [NSString stringWithFormat:@「?eventSourceId =%@&eventID =%d&eventType = 0&json =%@」,eventSourceId,_eventId,jsonString]; [NSCharacterSet URLQueryAllowedCharacterSet]]應該... – Larme
您真的可以發送JSON作爲URL參數? – Droppy
感謝您的快速回復。我發現我的錯誤。大括號和我必須用'[jsonString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]''替換encodedQueryString'的問題。通過這種方式,所有大括號和雙引號都被編碼,從而創建一個有效的URL。但我仍然遇到問題,其他應用程序並未真正處理URL。 – Syrinscaper