Web服务调用的HTTP GET编码

2024-09-30 05:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从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;

Tags: webcloseresponse错误浏览器urireqreader
1条回答
网友
1楼 · 发布于 2024-09-30 05:26:35

您在“[key1=val1,val2,val3;key2=val4;key3=val5]”中的“=”符号需要进行双转义。尝试转义datainputs的值,然后转义完整的URL。在

相关问题 更多 >

    热门问题