C# 在c中使用HttpWebRequest和HttpWebRequest发布XML数据时引发WebException#
我试图通过在基于C#ASP.net的web应用程序中使用HttpWebRequest发送xml文档并使用HttpWebResponse接收,从UIDAI数据中心获取响应xml。我已经用一个java应用程序检查了它,它在他们这方面工作得很好,但是基于web的应用程序抛出了一个异常 System.dll中发生“System.Net.WebException”类型的异常,但未在用户代码中处理 注意:web异常发生在最后一行的第5行 请提出一些解决方法C# 在c中使用HttpWebRequest和HttpWebRequest发布XML数据时引发WebException#,c#,xml,httpwebrequest,httpwebresponse,C#,Xml,Httpwebrequest,Httpwebresponse,我试图通过在基于C#ASP.net的web应用程序中使用HttpWebRequest发送xml文档并使用HttpWebResponse接收,从UIDAI数据中心获取响应xml。我已经用一个java应用程序检查了它,它在他们这方面工作得很好,但是基于web的应用程序抛出了一个异常 System.dll中发生“System.Net.WebException”类型的异常,但未在用户代码中处理 注意:web异常发生在最后一行的第5行 请提出一些解决方法 public void SendForAuthen
public void SendForAuthentication()//user defined function for Sending and Receiving Requests
{
string url = "http://auth.uidai.gov.in/1.6/public/9/9/MLTbKYcsgYMq1zgL3WMZYrnyvsarlljxpom2A-QTPc0Zud23shpnqPk";//the host address
StreamReader sr1 = new StreamReader("D:\\test-signed.xml");//loading xml file to stream
string XMLData = sr1.ReadToEnd();
string Conn = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>";
XMLData = Conn + XMLData;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes(XMLData);
req.Method = "POST";
req.ContentType = "text/xml;charset=utf-8";
req.ContentLength = requestBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)req.GetResponse();//**here I am getting a webexception**
StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
string backstr = sr.ReadToEnd();
reader.ReadToFollowing("title");
File.WriteAllText("D:\\xml.xml", backstr);
}
public void SendForAuthentication()//用于发送和接收请求的用户定义函数
{
字符串url=”http://auth.uidai.gov.in/1.6/public/9/9/MLTbKYcsgYMq1zgL3WMZYrnyvsarlljxpom2A-QTPc0Zud23shpnqPk“;//主机地址
StreamReader sr1=新建StreamReader(“D:\\test signed.xml”);//正在将xml文件加载到流
字符串XMLData=sr1.ReadToEnd();
字符串Conn=@“”;
XMLData=Conn+XMLData;
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(url);
byte[]requestBytes=System.Text.Encoding.UTF8.GetBytes(XMLData);
请求方法=“POST”;
req.ContentType=“text/xml;charset=utf-8”;
req.ContentLength=requestBytes.Length;
Stream requestStream=req.GetRequestStream();
Write(requestBytes,0,requestBytes.Length);
requestStream.Close();
HttpWebResponse=(HttpWebResponse)req.GetResponse();//**这里我得到一个webexception**
StreamReader sr=新的StreamReader(response.GetResponseStream(),System.Text.Encoding.Default);
字符串backstr=sr.ReadToEnd();
读者。阅读如下(“标题”);
File.writealText(“D:\\xml.xml”,backstr);
}
编辑:
我得到的例外是“操作已超时”,尽管我增加了操作时间
编辑2:
上面的代码工作正常实际上我的防火墙有问题异常的
消息
属性是什么?是否存在InnerException
?@Richard它表示连接已超时。我增加了“httpRuntime executionTimeout=”1000000“。当我测试使用[link](www.requestmaker.com)提供的服务器引擎将xml发送到同一url时,它工作得很好。我会使用类似Fiddler的东西来查看HTTP级别上的情况:请求的头和正文是否与服务预期相符。另外,请用异常的全部细节和调试步骤更新问题。使用fiddler时,我得到3个与主机名匹配的进程。第一个给出了一个结果:200,表示它是用响应头实体编码的:content length:2731 content type:text/html;字符集=utf-8杂项:X源文件:=?utf-8?B?QzpcVXNlc。。。第二个过程也给出了HTTP/1.1 200 OK,内容长度更改,内容类型更改为application/json第三个过程使用传输内容编码:qzip是否有不同的接收方式您需要在Inspector中使用正确的解码选项:查看下方(响应)窗格的transformer选项卡