2012-03-26 47 views
0

我正在使用NSMutableURLRequest執行從iOS5到自定義服務器的簡單文件上傳。當我發送請求時,我打印出bodyContents的長度,它包含請求的主體。對於我正在處理的特定請求,它會說長度爲46784.我沒有設置內容長度,因爲我發現它是自動執行的,但是我仍然會提取信息,以備日後需要時使用。服務器接收到的頭文件表示內容長度爲46784.當我在服務器端對身體進行字符計數時,它告訴我身體長度爲46788,4太多。我再次發出了另一個請求,請求中還有4個字符比我發送的字符多。NSMutableURLRequest添加額外的信息到正文,使內容長度不正確

起初,我認爲它必須在服務器端,只是因爲它沒有任何意義。所以我從測試程序發出一個請求,我知道這個請求對服務器有效,並且檢查了它發送給內容長度頭的主體的長度,它們是相同的。

處理這個問題的最佳方法是什麼?我應該手動將內容長度設置爲4+[bodyContents length]?我不認爲這會是我想要做的,只是因爲我不應該爲數據添加額外的空間,我不知道我想要的。

這裏是發送請求

-(void)send:(id)delegate 
{ 
    bodyContents = [bodyContents stringByAppendingFormat:@"--%@--",boundry]; 
    NSInteger length = [bodyContents length]; 
    NSLog(@"Length is %i",length); 
    [request setHTTPBody:[bodyContents dataUsingEncoding:NSUTF8StringEncoding]]; 
    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:delegate]; 
    if(connection) 
    { 
     NSLog(@"Connection good"); 
    } 
    else 
    { 
     NSLog(@"Connection bad"); 
    } 
} 

我設置在類的init方法請求的內容類型屬性的代碼。

任何想法?

回答

1

當您指定的編碼,內容可以改變大小...得到大小您設置HTTPBody,然後看看是否能由四個字節自動調整的事情了。

+0

我剛剛嘗試過,它在編碼之前和之後都給了我相同的長度,並且身體的長度仍比應該長4個字符。 – nick 2012-03-26 18:40:31

+0

接下來要做的事情就是比較你發送的內容和收到的內容之間的字節,看看有什麼不同。 – 2012-03-26 18:43:43

+0

我跑了差異,並沒有發現請求中的差異,但這讓我想到,爲什麼不在工作請求和非工作請求(我應該做很久以前的事情)上運行差異,並指出2或者我需要做的3個小改動。謝謝:) – nick 2012-03-26 20:09:32