我正在实现此代码,该代码从当前交易中获取苹果在应用程序购买收据(此处未列出),我将其转换为base64
NSData
对象,使用值和键(json对象)创建新的NSString
并将其发送通过 NSUrlconnection
。
当编译器通过请求调用 init 时,应用程序会在 2 秒后崩溃......
没有得到任何回应。这是代码。
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 也很陌生,所以这也可能是一个问题。
那是因为你的代码中的这一行:
[request setHTTPBody:[NSString stringWithFormat:@"%@",requestdata]];
尝试将 HTTPBody 设置为某种格式化的 NSString,而该方法实际上需要 NSData。
只需使用:
[request setHTTPBody: requestdata];
看看你是否有更好的结果。