2011-12-16 18 views
0

私はC#から呼び出しているWebサービスを持っています。応答は常にエラーになり、より複雑なクエリを作るしかしWebサービスコールのHTTP GETエンコーディング

http://localhost:8080/cgi-bin/py-wps.cgi?service=wps&version=1.0.0&request=describeprocess&identifier=test 

、私は成功したような、単純なGETクエリを使用して、応答を取得することができました。私が呼んでいる

http://localhost:8080/cgi-bin/py-wps.cgi?service=wps&version=1.0.0&request=execute&identifier=test&datainputs=[key1=val1,val2,val3;key2=val4;key3=val5] 

WebサービスはPyWPSを使用して公開し、私が使用しているクエリ文字列は、ブラウザで行われた場合に有効です。

私は、キーと値のペア内のすべての値脱出しようとしました:私も

HttpUtility.UrlEncode 

HttpUtility.UrlPathEncode 

Iの組み合わせを試した

e.g. "datainputs=[key1="+Uri.EscapeDataString("val1"), ... 

をException exceptionCode = "MissingParameterValue" locator = "key1"

などのエラーが発生します。

私は何が間違っているのか分かりませんが、これらのURLはブラウザで正しく動作しますので、私はそれらを正しくエンコードしていると思います。 1つのキーと値のペアにキーと値のペアのリストが含まれている投稿は見つかりませんでした(つまり、datainputs = [key1 = v1、v2、v2; ...など)

この問題に関する助けをいただければ幸いです。

編集:これは私が

var targetUri = new Uri(uri); 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(targetUri); 
     req.Method = method.ToUpper(); 
     req.ContentLength = 0; 
     req.ContentType = "text/xml"; 

     HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
     Stream responseStream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader(responseStream); 

     string responseString = reader.ReadToEnd(); 

     reader.Close(); 
     responseStream.Close(); 
     response.Close(); 

     return responseString; 
+0

この最初のシナリオ(最初のコードブロック)はどのようにエスケープする必要がなく、正しく動作しますか。 2番目のコードブロックを使用すると、 ""というエラーが発生します。 2番目のクエリをエスケープしてもこのエラーが発生します。 – Castrona

答えて

0

あなたの '=' サインWebサービスを呼んでいる方法である "[キー1 = val1と、VAL2、val3は、KEY2 = val4; KEY3 = val5]"ダブルエスケープする必要があります。 datainputsの値をエスケープしてから、完全なURLをエスケープしてみてください。

+0

"["と "]"の中のすべてをエスケープして残りのクエリに追加してエスケープしようとしましたが、これはどちらかと思われません。私も "["と "]"を残りのdatainputsでエスケープしようとしましたが、これはどちらもうまくいかないようです。私はURLをエスケープする方法をよく理解していないと思います。 – Castrona

+0

あなたは今説明した内容の例を挙げることができますか? –

+0

@ M.Babockここでは、 "["と "]"の中の値を二重エスケープする場合の例を示します。 'http:// localhost:8080/cgi-bin/py-wps.cgi?サービス%3dwps%26version%3d1.0.0%26identifier%3drivermodel%26request%3dexecute%26datainputs%3d%5bsiteid%253d02169505%252c021695048%252c021695045%253bdatetime %253d2011-10-01_12%253a00%253bkey%253d%5d' – Castrona

関連する問題