我想做的事情通过它需要这样一个URI webservice的一个创造:
请求URI过长与web服务
http://<url>/webservice.php?operation=<operation>&elementType=<elementType>&element=<element>&
我的问题是,元素是HTML的身体,这是一个电子邮件的所有信息约6000个字符。
我要调用的URL是这样的:
var request = WebRequest.Create(urlToUse.ToString());
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = urlToUse.Length;
var requestStream = request.GetRequestStream();
var requestStreamWriter = new StreamWriter(requestStream);
requestStreamWriter.Write(urlToUse);
requestStreamWriter.Close();
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
if (responseStream == null) return null;
var responseStreamReader = new StreamReader(responseStream);
var responseFromServer = responseStreamReader.ReadToEnd();
responseStreamReader.Close();
responseStream.Close();
response.Close();
,但它打破在
var response = request.GetResponse();
并表示URI太长。
我无法更改服务器的最大URL长度,并且webservice需要url中的参数。
我还没有找到合适的解决方案,所以任何帮助表示赞赏。
更新:
对于任何人面临同样的问题,这对我工作的解决办法是把我查询到一个字节数组一样
var encoding = new UTF8Encoding();
byte[] bytes = enconding.GetBytes((queryString));
,并编写成WebRequest的,而不是我的查询字符串
var stream = request.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
您正在使用'POST',那么您为什么不通过请求正文中的信息? – Belogix 2014-10-06 15:51:55
您似乎对GET和POST的工作方式以及在代码中混合使用这两种方式感到困惑。如果您通过POST发送数据,则不需要将它们作为查询参数。 – 2014-10-06 15:54:04
如果我将这些信息添加到body中,我怎么能把它们放在url之后,这样webservice才会做它应该做的事情? – user2414460 2014-10-07 10:18:04