正在使用java Web服务获取错误

时间:2015-10-15 05:52:48

标签: c#

我在win表单应用程序中使用java web服务时遇到错误

错误是

  

如果设置ContentLength> 0或,则必须提供请求正文   SendChunked ==真。通过之前调用[Begin] GetRequestStream来完成此操作   [开始]的GetResponse。

我使用java服务的代码

       public  byte[] StringToByteArray(string stringData)
        {
        System.Text.UTF8Encoding Encoding = new System.Text.UTF8Encoding();
        return Encoding.GetBytes(stringData);
        }
       private void button1_Click(object sender, EventArgs e)
        {
         string DATA = @"<RepositoryType>117</RepositoryType>
                       <RepositoryCategory>0</RepositoryCategory>
                       <ModifiedBy>2825</ModifiedBy>
                       <ReferenceCode>0</ReferenceCode>
                      <FromDate>2015-10-14T11:50:00</FromDate>
                      <ToDate>2015-10-14T11:51:00</ToDate>
                      <RepositoryName>ashok</RepositoryName>
                      <RepositoryShortName>kumar</RepositoryShortName>
                      <RepositoryDesc>nothing</RepositoryDesc>
                      <Fixed>F</Fixed>
                      <IsValid>true</IsValid>
                       <lstVisa />
                      <SortOrder>0</SortOrder>
                     </Repository>";`

                     byte[] postdata = null;
                    HttpWebRequest _WebRequest = null;
        HttpWebResponse webresponse = null;
        StreamReader ResponseStream = null;
        string sReturnVal = string.Empty;
        string
serviceAddress="http://172.16.12.21:8888/XML_RESPONSE/rest/test/xmltest/";


         try

         {
            _WebRequest = (HttpWebRequest)WebRequest.Create(serviceAddress + "/" + DATA);
            postdata = StringToByteArray(DATA);
            if (_WebRequest != null)
            {
                if (postdata!=null)
                {


                    _WebRequest.Method = "POST";

                    _WebRequest.ContentType= "text/xml";

                    _WebRequest.ContentLength = postdata.Length;

                    _WebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
                    _WebRequest.SendChunked = true;



                }





                    **webresponse = (HttpWebResponse)_WebRequest.GetResponse();**
                    {

                            if (webresponse.Headers.Get("Content-Encoding") != null && webresponse.Headers.Get("Content-Encoding").ToLower() == "gzip")
                                ResponseStream = new StreamReader(new GZipStream(webresponse.GetResponseStream(), CompressionMode.Decompress));
                            else
                            {
                                Encoding enc = System.Text.Encoding.GetEncoding(1252);
                                ResponseStream = new StreamReader(webresponse.GetResponseStream(), enc);
                            }
                            if (ResponseStream != null)
                            {
                                XElement Root = XElement.Load(ResponseStream);
                                sReturnVal = Root.Value;
                            }

                    }

            }
            else
            {
                throw new Exception("Connection to " +  " Service could not be Established.",
                    new Exception("Please Check whether " + 
                        " Service is running Or Contact your System Administrator."));

            }
         }

         catch(Exception ex)

         {

         }
    }

突出显示的行正在出错。

请帮忙。

1 个答案:

答案 0 :(得分:0)

您正在将数据添加到网址,而不是将其作为请求正文发布。请查看此问题,了解您可以使用的代码:HTTP POST using web service。使用ASP.NET webservices,您必须设置SOAPAction HTTP标头,如果您的服务不需要,可以跳过此行。