ios 4.3将文件上传到wcf json web服务

时间:2011-09-28 13:43:30

标签: objective-c wcf json ios4

我已经在这个错误/问题上自杀了几天了,我疯了。我不知道为什么它会破裂。我想知道你们和女士们是否可以借给我一把手,摆脱我的疯狂。所以,提前谢谢你。

我要做的是:从iphone应用程序(ios 4.3)将.wav文件上传到wcf json Web服务(.net 4.0)。我已经验证该服务可以在不同的客户端运行。

问题:问题是5天前工作的iPhone应用程序上的代码相同。昨天和今天代码决定不起作用。服务端和iPhone应用程序没有任何改变。

我会发布尽可能少的代码,以保持与主题相关且简单的内容。如果需要发布更多代码以使您更容易,我会。

我一直从didReceiveResponse方法的响应中获取状态代码400。我检查了多次发布的网址,网址似乎对我有用。

我发布到json Web服务的文件大小是1KB< fileSize< 450KB。

这是我发布的示例网址: http://random-ec2-id-east-1.elb.amazonaws.com/sampleApp/?key=ee404d54-ea45-421a-9633-1ea35c0c211e&token=zJSRqiZgmU6nOW44CeAzhWYxasdD0158yysNDCiASMk.eyJpdiI6IlU3Y2UwbWNXVGN6WVVBLU42SDVieGcifQ.kLbcRPOJ_QnrrtsBe-zF2-2IIbAffArvqeyAmwp_OpOWAoADMugHYjTPcnjkjQvzxEIMcm2k3933i3GqF2YFhAFDtItwvqre5fIGlixbuwsYhrVCm9FBoue4dCQ_pPX-yjUtq_898FGWa5INl0RG0A&type=c&platform=i

    // ################################
    - (id)init  {
      self = [super init];

      if (self) {

        self.sampleAppInstance = [sampleAppInstance sharedSampleAppInstance];

        self.sampleAppUrl = @"http://random-ec2-id.us-east-1.elb.amazonaws.com/sampleApp/";
        self.key = @"ee404d54-ea45-421a-9633-1ea35c0c211e";
        self.token = self.sampleAppInstance.facebook.accessToken; // facebook access token
        self.type = @"c";
        self.platform = @"i";

      }

      return self;
    }


    // #################################
    - (BOOL) save:(NSString *)_fileName {

      NSString *url = [NSString stringWithFormat:@"%@?key=%@&token=%@&type=%@&platform=%@", self.sampleAppUrl, self.key, self.token, self.type, self.platform];
      NSData *voiceData = [NSData dataWithContentsOfFile:_fileName];

      //NSLog(@"%@", url);

      NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]] autorelease];
      [request setValue:@"text/plain" forHTTPHeaderField:@"content-type"];
      [request setHTTPMethod:@"POST"];

      [request setValue:[NSString stringWithFormat:@"%d", [voiceData length]] forHTTPHeaderField:@"content-length"];
      [request setHTTPBody:voiceData];

      [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

      return FALSE;
    }

    // #################################
    - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
      //NSLog(@"did failed");
      [self.delegate responseDidFailWithError:error];
    }

    // #################################
    - (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
      //NSLog(@"did receive data");
      //NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
      [self.delegate responseDidReceive:data];
    }

    // #################################
    - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response  {
      NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
      int statusCode = [httpResponse statusCode];

      // if get 400, then malform syntax
      //NSLog(@"%d", statusCode);
      if (statusCode != 200)
        [self.delegate responseDidFailWithStatusCode:statusCode];
    }

1 个答案:

答案 0 :(得分:0)

事实证明我的服务只接受文件大小<默认为65k。修复是将我的服务配置为接受文件> 65K。