We are facing a strange issue of getting different number of records as response while making the same webservice API call from our WS client code and SOAP UI.
Lets assume the WS API is something like Foo[] getBar() and it is supposed to return 2 records.
So when we are making a call from SoapUI we get two records but when our client code makes a call it is getting only one record.
I have grabbed the request XML posted by my WS client code from logs and used it to request from SoapUI.
Can it be an issue of an old client stubs?
PS: We are using Apache Axis.
Related
I encounter problem with Apache Camel.
I did two SOAP WebServices. First (i will call it A ) is a standard Proxy which calling WebServices B which do all job (getting data from Datebase, parsing response etc.).
It works very well as i expected. Im sending data to the A by SoapUI, A is sending request to B, B is getting data from database, parsing response, sending it to A, A is sending response to Soap UI. Perfect... until everything is working on http.
When i turn on ssl on JbossFuse where WebService A is deployed i'am able to send request by SoapUI to Webservice A, A is sending request to B, B is sending response, A is getting responce ( i see it in log ), and ... nothing more happen. SoapUI getting SocketTimeoutException: Read timed out.
It's look like WebService A doesn't know where should send response. Nothing especially happened in logs, 0 exceptions. Probably i forgot about one thing and i don't know what.
Jboss which i use is old one 6.1.0.redhat-379.
Have someone any ideas what can i do/what can i check which help me solve my problem?
It's not solution, but it's workaround of my problem.
I just did simple Ws Client in Webservice A which connect to Webservice B. Then instead of calling endpoint of WS B from blueprint, i call Bean with WS Client.
This is critical to my current project. I have written a client in C++ using Windows web services. This client talks to the Clickatell SMS SOAP web service. I have tested the request using the SOAPUI tool and get correct response. I also receive the SMS message. Now, when I do this programmatically it fails because the WsCall() [in the code generated from WSDL via wsutil.exe) inserts even though the SOAP request I have already includes Envelope and Body. I cannot take out my Envelope since I have namespace specified in it like this:
http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:tns=\"soap.clickatell.com\">
I know that the additional Envelope and Body are inserted since I see it in the Fiddler tool.
Any help I can get is highly appreciated!
Looks like you are using the older type rpc/encoded soap api.
Have you tried using the document/literal service?
(http://api.clickatell.com/soap/document_literal/webservice.php?wsdl)
I want to send response(I am getting the data from my DB) continuously every 5 minutes without any request from client by using SOAP and Axis2. I have created the SOAP server by using following link. http://www.eclipse.org/webtools/community/tutorials/TopDownAxis2WebService/td_tutorial.html
But I don't know how to response continuously from server. Please help me.
A webservice cannot send a response without being called because it won't know where to send the data nor what function is being invoked (a ws could have many functions).
The idea of a WS is to offer a service to everyone who can access it, so the response destinies are multiple.
If you want to get the data from your DB every 5 minutes, your client will have to call the WS every 5 minutes or less (take into account the server processing time).
I made a web service endpoint and exposed a method now i wanna add more parameter to my method
so each time i change in my method i have to regenerate my client. Is there any way so that i
dont have to generate my client again and again.
No, there is no way. If you change the method then the WSDL file is changed also. Web services communicates through SOAP between client and server. When you deploy your web service application and it has been changed, so how then client supposed to know if there is a new method or a new parameters added if the classes was generated from the old WSDL file. Client will send a SOAP request according to the old WSDL and the server won't be able to understand the SOAP message received from the client if there was any changes made to WSDL part related to the received message.
You could design a better webservice/endpoint that accepts a standalone xml document as argument so that the operation signature stays the same, even when you add more parameters.
More generally, it's bad form for a web service to expose it operations as literal method signatures.
I have a created web service that takes 2 complex types as parameters. I can use the auto-generated WSDL to create a new application that calls my web service and it works perfectly.
However, a 3rd party consumer is having trouble calling my web service. I see their incoming request in the IIS7 log file and a 500 error is being returned to them.
I suspect that their request is malformed. I would like to be able to see the entire <soap:envelope> that IIS7 is receiving so that I can troubleshoot the issue. I am using Windows Server 2008 and IIS7.
How can I do this?
I would open up a copy of WireShark while they are putting their request through. You can then see each packet which comes to your server. Wireshark is cool because it can put all of the packets back together so you can see the full HTTP request they're sending.