douzi9744 2018-05-09 13:49
浏览 79
已采纳

如何将数据从网页发送到XML然后发送到SOAP Web服务

Till now, we had a backend SOAP web service for our application which used xml input to hit the service. But now we are trying to build the front end which takes a few inputs from the user and updates only the xml atomic values accordingly, as we have the xml structure already. After the xml is updated from user values the service should hit with that xml as the input.

So the flow will be like: user input(html) --> update xml --> pass this xml as input to SOAP web service --- service response.

I have no idea what technologies can be used for this and how can it be done, for updating the xml I started with php and xpath, I don't know if I am right. Can anyone please help me with this and suggest the solution?

Also, my xml has soap headers, so I am having trouble using this xml with xpath, as xpath uses pure xml. Any solution on this too?

java, springs is used for backend development.

  • 写回答

2条回答 默认 最新

  • duanpo7354 2018-05-09 14:53
    关注

    It's difficult to provide a precise answer without knowing the exact environment you're working with (target web service, preferred programming language, etc.). But I'll attempt a general answer.

    Consuming the Web Service

    SOAP webservices often (always?) provide a machine-readable description which can be "consumed" by some tool, generating code in your favorite language to interact with the API.

    For example, Salesforce offers a description of their SOAP API, customized for a given account, in the form of a WSDL (Web Service Description Language) file. It is XML, like SOAP requests/responses. For my applications, I have used Visual Studio to create a reference in my project to Salesforce's API using the WSDL file. The rest is done with simple object initialization and methods. For example:

    using ServiceName;  // Namespace generated by Visual Studio using the WSDL.
    
    var client = new ServiceClient("username", "password");
    
    client.Create(new ServiceThing("information", "about the new thing"));
    

    This example in C#-like syntax would call the SOAP API to create some object with the given information. The details of the network request are completely hidden.

    To learn how to consumer your target API's services, search for something like "consume WSDL in [language of your choice]". Even better, see if the target web service has documentation describing how to consume it.

    Sending Data from Web Page

    There are any number of tools to retrieve information from an HTTP POST request and act upon it. I'm most familiar with ASP.NET. You seem familiar with PHP.

    To keep things simple, you'll want to try to consume the target web service using the same language as your web service that receives input from the user. I'll provide an ASP.NET-like example which hopefully you can translate to your preferred tools:

    protected void Page_Load(object sender, EventArgs e) 
    {
        if (Page.IsPostback)
        {
            // a and b are names of input fields in our page.
            string a = Request["a"];
            string b = Request["b"];
    
           // Let's assume we've initialized the web service client as a property.
           Client.Create(new ServiceThing(a, b));
        }
    }
    

    There you go. No manual XML editing necessary. The SOAP XML is automatically generated based on your ServiceThing object and send to your target web service.

    Again, this is a general answer to a general question. If you update your question with more specifics, I'll try to edit this answer with more targeted details.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料