我有一个从C#调用的web服务。我已经能够使用简单的get查询成功地获得响应,例如:
http://localhost:8080/cgi-bin/py-wps.cgi?service=wps&version=1.0.0&request=describeprocess&identifier=test
但是,当进行更复杂的查询时,响应总是错误的。在
^{pr2}$我调用的web服务是用PyWPS发布的,如果放在浏览器中,我使用的查询字符串是有效的。在
我尝试转义键值对中的所有值:
e.g. "datainputs=[key1="+Uri.EscapeDataString("val1"), ...
我也尝试过
HttpUtility.UrlEncode
以及
HttpUtility.UrlPathEncode
我得到的错误包括:exceptionCode=“MissingParameterValue”locator=“key1”
我不知道我做错了什么,但这些网址在我的浏览器中工作正常,所以我怀疑我的编码不正确。我还没有找到任何一篇文章,其中一个键值对包含一个键值对列表(即datainputs=[key1=v1,v2,v2;…等等)
在这个问题上的任何帮助都是非常感谢的。在
编辑:这就是我调用web服务的方式
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;
您在“[key1=val1,val2,val3;key2=val4;key3=val5]”中的“=”符号需要进行双转义。尝试转义datainputs的值,然后转义完整的URL。在
相关问题 更多 >
编程相关推荐