C# XML通过HTTP发送带有脚本的页面
我正在尝试将XML文档发送到page.asp,并获取答案,但出现以下错误: System.UriFormatException:无效的URI:URI方案无效。在GNS_ZalkarBank.GNSTaskServiceZalkarBank.CreateRequest(字符串请求Uri字符串)在GNS_ZalkarBank.GNSTaskServiceZalkarBank.CreateRequest(字符串请求数据,字符串地址)在System.Net.WebRequest.CreateThis(字符串Uri,布尔顿特斯卡普,UriKind UriKind)处位于GNS_ZalkarBank.GNSTaskServiceZalkarBank.processData(TaskInfo&TaskInfo,Object&data)的Task.RegistryTemplate.RegistryTaskTemplate.execute(DataSet&DataSet)` 我使用asp服务器脚本实现了向页面发送数据的方法:C# XML通过HTTP发送带有脚本的页面,c#,xml,asp-classic,exception-handling,httpwebrequest,C#,Xml,Asp Classic,Exception Handling,Httpwebrequest,我正在尝试将XML文档发送到page.asp,并获取答案,但出现以下错误: System.UriFormatException:无效的URI:URI方案无效。在GNS_ZalkarBank.GNSTaskServiceZalkarBank.CreateRequest(字符串请求Uri字符串)在GNS_ZalkarBank.GNSTaskServiceZalkarBank.CreateRequest(字符串请求数据,字符串地址)在System.Net.WebRequest.CreateThis(字
private string SendRequest(String requestString, String address)
{
address = "https://myadress/osmp_gni_xml.asp";
HttpWebRequest httpRequest = this.CreateRequest(requestString, address);
string response = GetResponse(httpRequest);
return response;
}
private HttpWebRequest CreateRequest(string requestData, string address)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
request.Method = "POST";
//request.UserAgent = "Test";
byte[] data = Encoding.UTF8.GetBytes(requestData);
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = data.Length;
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(data, 0, data.Length);
dataStream.Close();
}
return request;
}
private string GetResponse(HttpWebRequest httpWebRequest)
{
string responseString;
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
using (Stream dataStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(dataStream))
{
responseString = reader.ReadToEnd();
}
}
return responseString;
}
服务器端(脚本页面:osmp_gni_xml.asp):
0那么
BinaryStream.CharSet=字符集
其他的
BinaryStream.CharSet=“us ascii”
如果结束
'打开流并从对象获取二进制数据
Stream\u BinaryToString=BinaryStream.ReadText
端函数
结果=300
OK=“请求不完整”
Dim PostData
暗比达
PostData=“”
如果Request.TotalBytes>0,则
biData=Request.binarydead(Request.TotalBytes)
PostData=Stream_BinaryToString(biData,“utf-8”)
ProvStr=“Provider=sqloledb;数据源=TEST;初始目录=TESTOsmp;用户Id=tests\u osmp;密码=tests;”
Set Conn=Server.CreateObject(“ADODB.Connection”)
康涅狄格州开放大学
设置cmdUA=Server.CreateObject(“ADODB.Command”)
cmdUA.ActiveConnection=Conn
cmdUA.CommandText=“GNI_导入”
cmdUA.CommandType=4
cmdUA.Parameters.Append cmdUA.CreateParameter(“Reestr”,202,1,2000,PostData)
设置RS=cmdUA.Execute
结果=卢比(“结果”)
RS.Close
康涅狄格州关闭
设置连接=无
设置RS=无
如果结束
'创建XML
设置XMLDoc=Server.CreateObject(“Microsoft.XMLDOM”)
设置pi=XMLDoc.createProcessingInstruction(“xml”,“version=”“1.0”“encoding=”“utf-8”“”)
XMLDoc.appendChild(pi)
“主要的
设置mainNode=XMLDoc.createElement(“响应”)
XMLDoc.appendChild(主节点)
如果结果=0,则
OK=“OK”
其他的
结果=300
OK=“请求不完整”
如果结束
AddSubNode主节点,“结果”,结果
添加子节点主节点,“注释”,确定
Response.ContentType=“text/xml”
Response.Write XMLDoc.XML
设置mainNode=Nothing
设置XMLDoc=Nothing
%>
有什么问题吗?提供的错误文本来自这里:
private HttpWebRequest CreateRequest(string requestData, string address)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address); // <- THIS LINE
...
}
私有HttpWebRequestCreateRequest(字符串请求数据,字符串地址)
{
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(address);//我怀疑您提供的代码不是出现问题的代码,请参见以下内容:
private string SendRequest(String requestString, --> String address <--)
{
--> address = "https://myadress/osmp_gni_xml.asp"; <--
HttpWebRequest httpRequest = this.CreateRequest(requestString, address);
string response = GetResponse(httpRequest);
return response;
}
这就产生了同样的错误
在您的实际代码中,您在SendRequest中覆盖地址的位置的确切地址值是多少?是的,您是对的,问题是url地址。服务器使用https-我没有意识到。我只是要求提供客户端证书。
private string SendRequest(String requestString, --> String address <--)
{
--> address = "https://myadress/osmp_gni_xml.asp"; <--
HttpWebRequest httpRequest = this.CreateRequest(requestString, address);
string response = GetResponse(httpRequest);
return response;
}
https/:////myaddress//osmp_gni_xml.asp