2011-11-07 72 views
0

我正在執行此代碼至少拿蘋果從當前交易的應用程序購買收據(此處未列出)我將它轉換爲base64 NSData對象,創建新的NSString與值和鍵(json對象)並將其發送給低谷NSUrlconnection。 當編譯器命中init請求時,應用程序崩潰後2 seconeds ... 而沒有得到任何迴應。這是代碼。無法發送Json與NSUrlconnection

NSData *data = [NSData dataFromBase64String:receiptStr]; 
NSString *jsonString = [NSString stringWithFormat:@"{\"receipt-data\":\"(%@)\",\"password\":\"(%@)\"}", data, SHARED_SECRET]; 
NSLog(@"%@",jsonString); 
savedReceipt = jsonString; 
[[NSUserDefaults standardUserDefaults]setValue:savedReceipt forKey:@"savedrecipt"]; 
[[NSUserDefaults standardUserDefaults]synchronize]; 
NSData *requestdata = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; //urlData = [[NSMutableData data] retain]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:[NSString stringWithFormat:@"%@",requestdata]]; 
[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

任何人都有一個想法我做錯了什麼? 我也是json的新手,所以它可能也是一個問題。

回答

1

這是因爲這一行代碼:

[request setHTTPBody:[NSString stringWithFormat:@"%@",requestdata]]; 

試圖setHTTPBody一些格式化的NSString,當方法實際上是期望的NSData。

只需使用:

[request setHTTPBody: requestdata]; 

,看看是否有更好的效果。

+0

偉大的我會接受它! 你有什麼想法我該如何閱讀迴應? 這是什麼日誌打印[響應描述] –

+0

看看[Apple文檔NSHTTPURLResponse](http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation /Classes/NSHTTPURLResponse_Class/Reference/Reference.html),你會看到你如何訪問它的部分。 –