C# XML通过HTTP发送带有脚本的页面

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(字

我正在尝试将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服务器脚本实现了向页面发送数据的方法:

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