NSURLConnection返回0字节数据

时间:2012-01-16 13:40:31

标签: iphone objective-c request nsurlconnection synchronous

我正在使用同步方法发送nsurlconection请求,如下所示。 它与模拟器一起工作正常但不能在设备上工作。

这是我的代码

/////// FOR POST
    NSString *postData=[NSString stringWithFormat:@"message=%@",
                         [[dicGlobal valueForKey:@"giftMessage"] stringByURLEncode]];

    NSData *myRequestData = [ NSData dataWithBytes: [ postData UTF8String ] length: [ postData length]];

    NSLog(@"%@",myRequestData);

    NSURL *url=[NSURL URLWithString:strUrl];
    NSMutableURLRequest *request=[[NSMutableURLRequest alloc] initWithURL:url];
    [ request setHTTPMethod: @"POST" ];
    [ request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    [ request setHTTPBody: myRequestData ];
    NSURLResponse *response;
    NSError *error;
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];
    if (returnData) {
        NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
        NSLog(@"%@",content);
        TBXML *tbxml=[TBXML tbxmlWithXMLString:content];

请检查我的代码并帮助我解决问题所在。

谢谢&问候 Shivam

2 个答案:

答案 0 :(得分:0)

在这一行:

NSURL *url=[NSURL URLWithString:strUrl];

什么是strUrl。声明和分配在哪里?

我不确定,但看起来您的网址可以通过Mac访问(也许它是您网络上的资源),但不是来自您的设备。 (您的设备通过其他Wi-Fi网络或3G连接?)。

尝试从Mac创建Wi-Fi网络,并将设备连接到此网络。 希望这可以解决问题。

答案 1 :(得分:-1)

实施此代码

 NSString *postData=[NSString stringWithFormat:@"message=%@",
                             [[dicGlobal valueForKey:@"giftMessage"] stringByURLEncode]];

        NSData *myRequestData = [ NSData dataWithBytes: [ postData UTF8String ] length: [ postData length]];

        NSLog(@"%@",myRequestData);

        NSURL *url=[NSURL URLWithString:strUrl];
      NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:url
                                                                   cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                               timeoutInterval:30.0];
        [ request setHTTPMethod: @"POST" ];
        [ request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
        [ request setHTTPBody: myRequestData ];
        NSURLResponse *response;
        NSError *error;
        NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];
        if (returnData) {
            NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
            NSLog(@"%@",content);
            TBXML *tbxml=[TBXML tbxmlWithXMLString:content];