Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web服务动态使用HttpWebRequest不支持的媒体类型_C#_Xml_Web Services_System.net.httpwebrequest - Fatal编程技术网

C# Web服务动态使用HttpWebRequest不支持的媒体类型

C# Web服务动态使用HttpWebRequest不支持的媒体类型,c#,xml,web-services,system.net.httpwebrequest,C#,Xml,Web Services,System.net.httpwebrequest,我得到了消费web服务的需求,显示了结果,我正在尝试使用HttpWebRequest类消费web服务。我在req.GetResponse()中运行异常,非常感谢您的帮助。public void processVoucher() { public void processVoucher() { try { string url = "http://192.168.xxx.xx:xxxx/context-root-xxxxxxxx/AccountsPayableMan

我得到了消费web服务的需求,显示了结果,我正在尝试使用HttpWebRequest类消费web服务。我在req.GetResponse()中运行异常,非常感谢您的帮助。

public void processVoucher() {

public void processVoucher()
{
    try
    {
        string url = "http://192.168.xxx.xx:xxxx/context-root-xxxxxxxx/AccountsPayableManagerPort?WSDL/processVoucher"; 
        StreamReader str = new StreamReader(@"F:\IntelliChief integration to JD Edwards for AP Invoice entry\processVoucher_input_payload.xml");
        string ipParameter = str.ReadToEnd();

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.ContentType = "application/xml";
        req.KeepAlive = true;
        req.Timeout = 30000;
        req.Accept = "application/xml";//"text/xml";
        req.Headers.Clear();
        req.Method = "POST";
        Encoding encode = Encoding.GetEncoding("utf-8");


        using (Stream stm = req.GetRequestStream())
        {
            using (StreamWriter stmw = new StreamWriter(stm))
            {
                stmw.Write(ipParameter);
            }
        }

        var response = req.GetResponse(); // here i am getting Unsupported Media Type issue
        Stream responseStream = response.GetResponseStream();
        StreamReader strReader = new StreamReader(responseStream, encode, true);
        string result = strReader.ReadToEnd();
    }
    catch (Exception ex)
    {

        MessageBox.Show("Error Message:" + ex.Message);
        throw;
    }

}

最后我找到了问题的解决方案,上面是工作代码。在我将req.ContentType=“application/xml”更改为req.ContentType=“text/xml;charset=\“UTF-8\”;req.Accept=“application/xml”更改为req.Accept=“text/xml”之后,我删除了req.Headers.Clear();我的代码开始工作了,谢谢大家的支持…

不要清除标题,这可能就是问题所在。好的,我试过一次…嗨,马克,我试过通过注释行req.headers.clear()来运行代码,但只有当我将req.ContentType值更改为“text/xml”时,它才会抛出相同的错误和req.Accept值为“text/xml”,它现在抛出(500)个内部服务器错误。使用类似fiddler或wireshark的嗅探器。使用IE捕获良好连接,然后将结果与httpWebRequest进行比较。
        string soap = null;

        try
        {
            StreamReader str = new StreamReader(@"F:\xxx\some.xml");
            soap = str.ReadToEnd();
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://192.168.xxx.xx:xxxx/bla-bla-bla/AccountsPayableManagerPort?WSDL");
            req.ContentType = "text/xml;charset=\"UTF-8\"";
            req.Accept = "text/xml";
            req.Method = "POST";

            using (Stream stm = req.GetRequestStream())
            {
                using (StreamWriter stmw = new StreamWriter(stm))
                {
                    stmw.Write(soap);
                }
            }


            using (WebResponse response = req.GetResponse())
            {
                using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                {
                    string soapResult = rd.ReadToEnd();

                }
            }
        }
        catch (Exception)
        {

            throw;
        }

    }