1
我一直在爲這個bug /問題而自殺幾天,現在我瘋了。我不知道爲什麼它是休息。我想知道你們和加爾可以借我一把,擺脫我的瘋狂。所以提前謝謝你。ios 4.3上傳文件到wcf json web服務
我在做什麼:從iphone應用程序(ios 4.3)上傳.wav文件到wcf json web服務(.net 4.0)。我已經驗證該服務確實可以從另一個客戶端運行。
問題:問題是iPhone應用程序在5天前工作的代碼相同。昨天和今天的代碼決定不起作用。服務和iPhone應用程序沒有任何改變。
我會盡我所能發佈儘可能少的代碼,以使事情與主題保持相關和簡單。如果需要發佈更多代碼以使所有人都更容易,我會這樣做。
我始終從didReceiveResponse方法中的響應獲取狀態代碼400。我檢查了多次發佈的網址,並且該網址似乎對我有效。
我發佈到json web服務的文件大小爲1KB < fileSize < 450KB。
// ################################
- (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];
}
由於格式錯誤,服務器無法理解請求。客戶端不應該不經修改就重複請求。你檢查'voiceData長度'嗎? – Nekto
感謝您閱讀我的文章。根據你的問題。 voiceData的長度總是> 0.所以文件正在發佈。對於1秒文件,其長度爲50000,文件長度爲10秒,大約爲430000。上傳到json web服務時,文件的大小有限制嗎? –