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