1

これを一瞥して、私のNSURL*urlStringURLが常に「無効なCRStringRef」である理由を教えてください。ありがとう!

編集:以下のコードはGETであるため、機能しません。GETを機能させるために領収書をエンコードできません。良いコードは悪いコードの後に​​続きます。

- (void) sendReceipt {

NSObject *rData = [[NSUserDefaults standardUserDefaults] objectForKey:@"purchaseReceipt"];

NSNumber *custData = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];

NSString *urlString = [[NSString alloc] initWithString:@"https://www.privusmobile.info/Apple-???/?TYPE=GET"];    

NSLog(@"Transaction to send %@,%@" , rData,custData);


urlString = [urlString stringByAppendingFormat:@"&Cust=IP%@", custData];        
urlString = [urlString stringByAppendingFormat:@"&Receipt=%@", rData];

NSURL *urlStringURL =[NSURL URLWithString:[NSString stringWithFormat:@"%@",urlString]];

NSMutableURLRequest *urlRequest =[NSMutableURLRequest requestWithURL:urlStringURL];
NSString *params = [[NSString alloc]initWithString:urlString];
urlData = [[NSMutableData alloc]init];
[urlRequest setHTTPMethod:@"GET"];
[urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];


NSURLConnection *connection = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];


NSLog(@"started!");

}

悪いコードの終わり

良いコードは次のとおりです。

    - (void) sendReceipt {

NSObject *rData = [[NSUserDefaults standardUserDefaults] objectForKey:@"purchaseReceipt"];

NSNumber *custData = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:@"https://www.privusmobile.info/Apple??????/default.aspx?"]];

[request setHTTPMethod:@"POST"];
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];

NSString *xmlString = [NSString stringWithFormat:@"<data><item>IP%@ </item><item>%@</item></data>",custData,rData];


NSLog(@"XMLSTRING %@",xmlString);

[request setValue:[NSString stringWithFormat:@"%d",[xmlString length]] forHTTPHeaderField:@"Content-length"];

[request setHTTPBody:[xmlString dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

NSLog(@"started! %@",connection);        

}


 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

NSString * strResponse = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"SERVER DATA %@", strResponse);


}

手がかりは、エンコーディングのヒントでした。ありがとう。

4

1 に答える 1

0

URL 文字列をエンコードしてみてください。ほとんどの場合、スペースが含まれていますがrData、私は推測しています。これを試して:

NSObject *rData = [[NSUserDefaults standardUserDefaults] objectForKey:@"purchaseReceipt"];

NSNumber *custData = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];

NSString *urlString = [[NSString alloc] initWithString:@"https://www.privusmobile.info/Apple-App/?TYPE=GET"];

urlString = [urlString stringByAppendingFormat:@"&Cust=IP%@", custData];        
urlString = [urlString stringByAppendingFormat:@"&Receipt=%@", rData];

NSString* escapedUrlString =[urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

NSURL *urlStringURL =[NSURL URLWithString:escapedUrlString];
于 2012-09-18T18:57:49.557 に答える