2013-10-17 35 views
1

這是我的代碼,它使用POST請求來檢索數據,但我無法獲得所需的結果。 url中沒有問題,因爲它在瀏覽器上顯示JSON輸出。發佈請求無法正常工作,但在瀏覽器中正常工作?

NSString *urlString = @"my url string";      
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];   
[request setURL:[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];  
[request setHTTPMethod:@"POST"]; 

NSString *boundary = @"---------------------------14737809831466499882746641449"; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"email_string\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"%@\r\n",allIOSContactsEmailAddresses] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:body]; 

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (data!=nil) 
    { 
     NSArray* array=[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
     NSLog(@"array=%@",array); 
    }   
}]; 

它顯示陣列=控制檯(空)..

+0

檢查URL中是否有空格或特殊字符 – SRI

+0

url中沒有空格或特殊字符,我也在做字符串編碼 – user2534255

+0

你有什麼迴應?你有錯誤嗎?請同時發佈發送請求的代碼。 – HyBRiD

回答

1

您的多部分郵件正文未正確設置。

在最後一部分(你只有一個)後,需要有一個「近邊界分隔符」。所以,你定身的請求之前,你需要附加的分隔符:

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

嚴格,沒有必要用一個CRLF(「\ r \ n」關閉「關閉邊界分隔符」 )。

沒有必要在CRLF(您沒有)的前面加上實際的身體值(allIOSContactsEmailAddresses)。該CRLF將被視爲正文內容。其實,這可能會混淆消費者。

相反,對於文字的身體,一個關閉 CRLF可以有時需要(取決於服務器)。

注意添加標題時,它必須用CRLF關閉(如你所做的那樣)。爲了關閉標題區域,需要關閉CRLF。對此,你的信息是正確的。

+0

謝謝..它爲我工作.. – user2534255

1

我只是試圖用你的代碼,它成功沒有任何問題。

因此,您的問題是在您發送請求的服務器中,或者在您的NSURLConnection委託方法中未正確實施。

您還應該發送發送代碼(NSURLConnection用法)。

+0

我已更新我的問題.. – user2534255

相關問題