0

base64 でエンコードされていない限り、ヘッダー フィールド (つまり、@"Content-Type") の値を設定しても値が取得されないようです。メソッドのドキュメントには、プレーンな NSString が必要であると書かれているため、実際には問題になりません。ただし、この方法でエンコードすると、投稿リクエストの値が役に立たないように見えます...そうですか?下記参照:

[req setHTTPBody:allData];
     [req setHTTPMethod:@"POST"];
     [req setValue:@"multipart/related; "
      "boundary==_27da60ee13b84794c5873572c502aaae\n" forHTTPHeaderField:@"Content-Type"]; 

     NSLog(@"\n\n\t\t===headerField content-type===\n\n%@", [req valueForHTTPHeaderField:@"Content-Type"]);

収量:

2010-12-22 09:53:23.008 uploadXMLText[96009:207] 

          ===headerField content-type===

(null)

しかし、値文字列 @"multipart..." を base64 にエンコードすると、次のようになります。

収量:

2010-12-22 10:06:37.185 uploadXMLText[96234:207] 

          ===headerField content-type===

bXVsdGlwYXJ0L3JlbGF0ZWQ7IGJvdW5kYXJ5PT1fMjdkYTYwZWUxM2I4NDc5`*

アイデアはありますか?

ありがとう!

自分

4

2 に答える 2

0

それで、最初に、あなたのすべての答えに感謝します!

次に、すべてのヘッダーが入っていて、リクエストが送信されており、実際にサーバーから「400:yourrequestsucks」以外の応答を受け取ります。

これ:

NSMutableString *data = 
    @"--=_27da60ee13b84794c5873572c502aaae\n"
    "Content-Type: application/atom+xml\n\n"

    "<atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\">"
    "<media:group xmlns:media=\"http://search.yahoo.com/mrss/\">"
    "<media:category scheme=\"http://gdata.youtube.com/schemas/2007/categories.cat\">Comedy</"
    "media:category><media:description>test</media:description><media:keywords>"
    "foo, var</media:keywords><media:title>test title</media:title></media:group></atom:entry>\n"
    "--=_27da60ee13b84794c5873572c502aaae\n"
    "Content-Type: video/mov\n"
    "Content-Transfer-Encoding: binary\n\n";



    NSMutableData *allData = [NSMutableData dataWithData:[data dataUsingEncoding:NSUTF8StringEncoding]];
    [allData appendData:vidData];
    NSString *str = @"\n--=_27da60ee13b84794c5873572c502aaae--";
    [allData appendData:[str dataUsingEncoding:NSUTF8StringEncoding]];

この本文を送信します:

    <atom:entry xmlns:atom="http://www.w3.org/2005/Atom"><media:group xmlns:media="http://search.yahoo.com/mrss/">
<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Comedy</media:category>
<media:description>test</media:description>
<media:keywords>foo, var</media:keywords><media:title>test title</media:title>
</media:group></atom:entry>
    --=_27da60ee13b84794c5873572c502aaae
    Content-Type: video/mov
    Content-Transfer-Encoding: binary

それはうまくいき、ファイルをアップロードしました!

だから、もう一度あなたの助けに感謝します、そしてこれが将来の視聴者を助けることを願っています。

MiL3s

于 2010-12-22T22:40:49.970 に答える
0

ここで改行を取り除きます: boundary==_27da60ee13b84794c5873572c502aaae\n. に変更しboundary==_27da60ee13b84794c5873572c502aaaeます。これはおそらく、追加のヘッダーを挿入しようとすることから身を守る方法です。

于 2010-12-22T20:30:25.740 に答える