2011-08-13 13 views
2

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

私は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]; 
+0

返される応答は何ですか? – lifemoveson

+0

返されるレスポンスは、GETリクエスト(「Hello World!」)から返されるように指定したデフォルトのテキストです。 – jdb1a1

+0

WCFの部分が少し見えるのですか?特に、[Attributes] – Oli

答えて

1

私はASIHTTPRequestを使用して、WCF RESTサービスへのPOST要求を実行しましたが、すべてがスムーズに実行されているようです。これはおそらく、暗証番号NSMutableURLRequestのために文書化されていた裏で起こっているAPIキーのためのURLエンコーディングメカニズムの何らかの種類があることを知っています。良いことは、問題が修正されていることです。私が使用したコードは次のとおりです。

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]; 
+0

+1ニースの答え.. :)) – mAc

0

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

+0

ええ、私はそれを試み、結果を変更しませんでした。しかし、アイデアをありがとう。 – jdb1a1

+0

RE:「NSMutableRequestのURLにAPIキーを指定するのは問題ですか?」サーバーは、APIキーが来ることをどのように期待していますか? – Oli

+0

URLの一部として、http://www.myserver.com/myservice?apikey=12345678-1234-1234-1234-123456789876 – jdb1a1

関連する問題