2

目的の C コードに問題があります。POST 要求を受け取り、C# を使用して Java サーブレットに書き込む API キーで保護された WCF API を作成しました。とにかく、これは Fiddler でテストするときにうまく機能しますが、目的 C からはあまり良くありません。目的 C から POST を実行しようとすると、NSURLMutableRequest が GET を探しているように「動作」し、応答はデフォルトのみを返します。 GET メソッド用に記述したコード。これがなぜなのか、さらに、それを修正するために何ができるかを誰かが知っていますか? これは、Objective C で他の POST リクエストを作成するために (かなり成功して) 私が使用するコードです。

問題は、NSMutableRequest の URL に API キーを指定したことですか? それが私が理解できる唯一のことです。

コードは次のとおりです。

NSString* theMessage = [NSString stringWithFormat:@"<MyRequestObject xmlns='http://schemas.datacontract.org/2004/07/MyService'></MyRequestObject>"];

        NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:POST_API_URL] 
            cachePolicy:NSURLRequestUseProtocolCachePolicy
            timeoutInterval:240.0];

        [theRequest setHTTPMethod:@"POST"];
        [theRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
        [theRequest setHTTPBody:[theMessage dataUsingEncoding:NSUTF8StringEncoding]];

        NSString *msgLength = [NSString stringWithFormat:@"%d", [theMessage length]];
        [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];

        NSURLResponse* response;
        NSError *error;

        NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
4

2 に答える 2

1

私はASIHTTPRequestWCF REST サービスへの POST 要求を実行するために使用することになりましたが、今ではすべてがスムーズに実行されているようです。これはおそらく、API キーの何らかの URL エンコーディング メカニズムが舞台裏で行われていることを意味しますNSMutableURLRequest。良いことは、問題が修正されたことです。使用したコードは次のとおりです。

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:POST_API_URL]];
        [request appendPostData:[[NSString stringWithFormat:@"<MyRequest xmlns='http://schemas.datacontract.org/2004/07/MyService'>all of my request params in here</MyRequest>"] dataUsingEncoding:NSUTF8StringEncoding]];

        [request setRequestMethod:@"POST"];
        [request addRequestHeader:@"Content-Type" value:@"text/xml"];

        [request startSynchronous];
于 2011-08-14T15:52:54.473 に答える
0

Content-Length ヘッダーを設定してみましたか? ヘッダーとして長さが定義されていない場合、WCF/IIS は本文を無視している可能性があります。

于 2011-08-13T04:31:05.030 に答える