c#客户端调用webservice 301 Moved Permanently
时间: 2023-11-21 15:56:25 浏览: 45
为了解决C#客户端调用Web服务时出现301 Moved Permanently的问题,可以尝试以下方法:
1.检查Web服务的URL是否正确,确保没有拼写错误或其他错误。
2.尝试使用HttpWebRequest类而不是WebClient类来调用Web服务。HttpWebRequest类提供了更多的控制和灵活性,可以更好地处理重定向。
3.在HttpWebRequest对象中设置AllowAutoRedirect属性为true,以允许自动重定向。
4.如果仍然无法解决问题,可以尝试手动处理重定向。在HttpWebRequest对象中设置AllowAutoRedirect属性为false,并在重定向响应中获取Location头的值,然后使用新的URL创建新的HttpWebRequest对象并发送请求。
以下是一个使用HttpWebRequest类调用Web服务的示例代码:
```csharp
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://example.com/myservice.asmx");
request.Method = "POST";
request.ContentType = "text/xml";
request.AllowAutoRedirect = true;
// Add SOAP XML to request body
string soapXml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<tem:GetData>" +
"<tem:input>123</tem:input>" +
"</tem:GetData>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
byte[] bytes = Encoding.UTF8.GetBytes(soapXml);
request.ContentLength = bytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
stream.Close();
// Get response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string responseXml = reader.ReadToEnd();
reader.Close();
responseStream.Close();
response.Close();
```