将SOAP信封发布到MSDynamicsNAVWeb服务代码:privatevoidbutton1_Click(objectsender,EventArgse){stringrequestString=LoadData();HttpWebRequest请求;HttpWebResponse响应=null;字符串url="http://localhost:7047/DynamicsNAV70/WS/Page/nav_Item";byte[]requestBuffer=null;流postStream=null;流responseStream=null;StreamReaderresponseReader=null;请求=(HttpWebRequest)WebRequest.Create(url);request.ProtocolVersion=newVersion(1,1);request.Method="POST";//request.Headers.Add("SOAPAction",@"urn:microsoft-dynamics-schemas/page/nav_item:create");request.Headers.Add("Action",@"urn:microsoft-dynamics-schemas/page/nav_item");//request.Headers.Add("Content-Type",@"text/xml;charset=utf-8");request.ContentType=@"application/xml;charset=utf-8";requestBuffer=Encoding.ASCII.GetBytes(requestString);request.ContentLength=requestBuffer.Length;request.UseDefaultCredentials=true;postStream=request.GetRequestStream();postStream.Write(重新questBuffer,0,requestBuffer.Length);postStream.Close();响应=(HttpWebResponse)request.GetResponse();responseStream=response.GetResponseStream();字符串response_result=string.Empty;if(responseStream!=null){responseReader=newStreamReader(responseStream);response_result=responseReader.ReadToEnd();}MessageBox.Show(response_result);}privatestringLoadData(){//抛出新的NotImplementedException();XmlDocumentoCustomer=newXmlDocument();oCustomer.Load(@"C:Userskishore.LOCAL.000DesktopNAV_DEMONAV_DEMObinDebuginputitem.xml");返回oCustomer.InnerXml;}SOAP信封的格式如下:1234TestItem但是当我尝试在HttpWebRequest中获取不带Header的响应时,它返回整个Web服务,状态正常,但Item未插入NAV当我尝试通过HttpWebRequest中的Header获取响应时,其{"Theremote服务器返回错误:(500)内部服务器错误。”System.Net.WebExceptionStatus.ProtocolError}我想使用肥皂信封在NAV中创建项目,而不是直接引用服务。任何帮助都会对我有所帮助。关注KishoreK。看起来您正在使用SOAPui创建请求xml。这个应用程序总是在每一行的末尾添加不可见字符。删除它们。还尝试取消格式化您的请求,例如使它成为一条线。由于未知原因,某些标记之间的导航威胁线作为错误(抛出http500)。我忘记了哪些标签(标题和文本)。其余的阵容都很好。SOAPAction标头是必需的,因此请使用它,否则您将始终获得wsdl响应。SOAP的Psbeta与Nav一起工作并支持NTLM,因此您可以使用它来测试不同的请求xml并找出哪个格式正确。我刚开始使用与导航Web服务的集成,我尝试使用简单的c#控制台应用程序发送xml请求,但它总是返回401(未授权)以上是C#学习教程:将SOAP信封发布到MS如果所有DynamicsNAVWebservice分享的内容对你很有用,需要了解更多C#学习教程,希望你多多关注—staticvoidMain(string[]args){Console.WriteLine("Wehavestarted");stringpageName="http://hrp-dmu.uganda.hrpsolutions.co.ug:9047/DynamicsNAV80/WS/Uganda%20Management%20Institute/Page/CustomerWS";HttpWebRequestreq=(HttpWebRequest)WebRequest.Create(pageName);req.Method="POST";req.ContentType="text/xml;charset=UTF-8";req.ProtocolVersion=newVersion(1,1);req.Headers.Add("SOAPAction",@"urn:microsoftdynamicsschemas/page/customerws:Create");Console.WriteLine("准备请求对象后");stringxmlRequest=GetTextFromXMLFile("E:\tst3.xml");Console.WriteLine("xml请求:"+xmlRequest);byte[]reqBytes=newUTF8Encoding().GetBytes(xmlRequest);req.ContentLength=reqBytes.Length;尝试{使用(StreamreqStream=req.GetRequestStream()){reqStream.Write(reqBytes,0,reqBytes.长度);}}catch(Exceptionex){Console.WriteLine("GetRequestStreamException:"+ex.Message);}HttpWebResponseresp=null;尝试{resp=(HttpWebResponse)req.GetResponse();}catch(Exceptionexc){Console.WriteLine("GetResponseException:"+exc.Message);}字符串xmlResponse=null;if(resp==null){Console.WriteLine("Nullresponse");}else{使用(StreamReadersr=newStreamReader(resp.GetResponseStream())){xmlResponse=sr.ReadToEnd();}Console.WriteLine("回应");控制台.WriteLine(xmlResponse);}控制台.ReadKey();}privatestaticstringGetTextFromXMLFile(stringfile){StreamReaderreader=newStreamReader(file);字符串ret=reader.ReadToEnd();读者。关闭();返还;}本文收集自网络,不代表立场。如涉及侵权请点击维权联系管理员删除如需转载请注明出处:
