2

AFNetworking を使用して、自分のページ (php ページ) の 1 つにキー値を送信しようとしています。この操作に AFHTTPRequestOperationManager を使用しています。投稿は正常に行われていますが、サーバー側で空白の値を受け取っています。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{@"name":@"1234",                               @"email":@"1234",@"regId":@"rty2345",@"device_flag":@"2"};
NSLog(@"%@", params);
manager.responseSerializer = [AFJSONResponseSerializer serializer]; // if response JSON format
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:@"http://xyz.in/app/apns/register.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    [self databaseInsertion];
    ShowViewController *mapp = [[self storyboard]instantiateViewControllerWithIdentifier:@"showview"];
    [self.navigationController pushViewController:mapp animated:YES];
    NSLog(@"%@", responseObject);
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"%@", error);
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}];

成功ブロックが実行されるように、JSON 文字列を送り返しています。しかし、サーバー側で値を取得しようとすると、すべての値が空白になります。

次に、ブラウザーを使用してhttp://www.xyz.in/app/apns/register.php?name=15&email=のようなデータを送信しようとすると、 NSMutableURLRequest *request を使用してデータを送信しようとしましたが、これも同じ結果になります1234®Id=r5678d&device_flag=2、うまくいきます。

NSMutableURLRequest を使用した私のコードは以下のとおりです

 NSString *post =[[NSString alloc] initWithFormat:@"name=%d&email=%d&regId=%@&device_flag=%d", status,[_emailTextField.text intValue],@"r5678d",2];
 NSLog(@"%@",post);
 NSURL *url=[NSURL URLWithString:@"http://xyz.in/app/apns/register.php"];
 NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
 NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
 [request setURL:url];
 [request setHTTPMethod:@"POST"];
 [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
 [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
 [request setHTTPBody:postData];
 NSError *error;
 NSURLResponse *response;
 NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
 NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
4

1 に答える 1

0

投稿の何が問題だったのかはわかりませんが、以前のプロジェクトのコードを切り取って貼り付けただけで、うまく機能しました。

NSString *post =[[NSString alloc] initWithFormat:@"name=%d&email=%d&regId=%@&device_flag=%d", status, [[_emailTextField text] intValue],app.deviceTooken,2];
NSURL *url=[NSURL URLWithString:@"http://www.xyz.in/app/apns/register.php"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
 NSError *error;
 NSURLResponse *response;
 NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
 NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
 NSLog(@"Data is %@",data);

ただし、パラメータがphpファイルに到達しない理由については、AFHTTPRequestOperationManagerにはまだ疑問があります。何か心当たりはありますか?

于 2014-02-28T07:24:46.550 に答える