0

NSMutableURLRequest を使用して、iOS5 からカスタム サーバーへの単純なファイルのアップロードを実行しています。リクエストを送信するときに、リクエストの本文を含む bodyContents の長さを出力します。私が取り組んでいる特定のリクエストでは、長さは 46784 であると表示されます。コンテンツの長さは自動的に設定されていることがわかったので設定しませんが、後で必要になった場合に備えてとにかく情報を取得します. サーバーが受信したヘッダーは、コンテンツの長さが 46784 であると言っています。サーバー側で本文の文字数を数えると、本文の長さが 46788 で、4 多すぎることがわかります。別のリクエストを実行しましたが、リクエストには送信した文字数よりも 4 文字多く含まれていました。

最初は、意味がないという理由だけで、サーバー側にある必要があると思いました。そのため、動作することがわかっているテスト プログラムからサーバーに要求を送信し、送信された本文の長さを content-length ヘッダーに対してチェックしたところ、それらは同一でした。

これに対処する最善の方法は何ですか?content-length を手動で に設定する必要があり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 メソッドで、リクエストの content-type プロパティを設定しました。

何か案は?

4

1 に答える 1

1

エンコーディングを指定すると、コンテンツのサイズが変更される可能性があります... HTTPBodyを設定したでサイズを取得し、それによって4バイトずつ自動的に調整されるかどうかを確認します。

于 2012-03-26T18:29:08.993 に答える