我正在使用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方法請求的內容類型屬性的代碼。
任何想法?
我剛剛嘗試過,它在編碼之前和之後都給了我相同的長度,並且身體的長度仍比應該長4個字符。 – nick 2012-03-26 18:40:31
接下來要做的事情就是比較你發送的內容和收到的內容之間的字節,看看有什麼不同。 – 2012-03-26 18:43:43
我跑了差異,並沒有發現請求中的差異,但這讓我想到,爲什麼不在工作請求和非工作請求(我應該做很久以前的事情)上運行差異,並指出2或者我需要做的3個小改動。謝謝:) – nick 2012-03-26 20:09:32