1

これを読む前に、私はObjective Cプログラマーであり、私が何をしているのか何も知らないC#プログラマーと一緒にサーバーの問題をデバッグするのを手伝おうとしていることを覚えておいてください。

SOAPパケットを.net/c#側に送信していますが、サーバーは変数のnullを受信します。URLと変数文字列をブラウザに入力すると、適切な応答が得られます。

投稿は「?help = 1&email = test@email.net&password = testpassword」にログアウトしますが、「Result = Error&Details=オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示され続けます。リターン文字列に戻ります。

NSString *post = [NSString stringWithFormat:@"?help=1& email=? & password=%@",userEmail, userPassword];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];


NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setURL:[NSURL URLWithString:LOGIN_SERVICE]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

//Submit the Post:
[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

/NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

//Extract Return:
NSString *returnString = [[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding];
4

1 に答える 1

2

フォーマット文字列内のメール変数が入力されていませんでした。また、投稿データにスペースがあるのはなぜですか? これがあなたの問題を引き起こしていると思います。データにはスペースが含まれている可能性があるため、スペースをエスケープする必要があります。

それ以外の:

NSString *post = [NSString stringWithFormat:@"?help=1& email=? & password=%@",userEmail, userPassword];

試す:

NSString* escapedUserEmail = [userEmail stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString* escapedUserPassword = [userPassword stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

NSString *post = [NSString stringWithFormat:@"?help=1&email=%@&password=%@",escapedUserEmail, escapedUserPassword];

このトピックの詳細については、http: //deusty.blogspot.com/2006/11/sending-http-get-and-post-from-cocoa.htmlを参照してください。

于 2012-11-26T23:44:46.283 に答える