WWS server not responding over a network - c++

I have been testing WCF and WWS services, both my own and the SortService by Mykolad Dudar.
First the WCF version is created, and then wsutil is used for the WWS version.
Both the WCF and WWS services are working fine if the server and client run on the same machine. However, the WWS server is not responding if the server and client are on different machines. The WCF version works fine.
The binding is wshttp and security is set to ’None’. No firewalls or anti virus programs running.
This is the error message I get on the client calling the WWS:
Error: There was no endpoint listening at http://10.100.81.218:8080/SortService
that could accept the message. This is often caused by an incorrect address or S
OAP action. See InnerException, if present, for more details.
System.Net.WebException: The remote server returned an error: (400) Bad Request.
The InnerException is empty.
I’m sure I’m missing something, can anyone please help me out?

Got it working. In case anyone else encounters the same problem, here is how:
Turns out that using ‘localhost’ in the web service url was the problem (on the server). Using the machine IP address instead, solved the problem.
Using ‘localhost’ for the WCF service worked fine, so there is a difference between WCF and WWS on this point.

Related

Apex callout to local web service or to web service in test environment?

I'm pretty new to salesforce callout stuff and trying to make a simple GET request from my salesforce callout, but I kept getting this error:
System.CalloutException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 404 Not Found
I'm pretty sure this is because I'm making request to the web service on my local machine, but since I'm only testing this out, I don't have a server that's available online.
I tried making a callout to just http://www.google.com?q=blah and it works just fine.
So I guess my question is that anyone has a way to make callout to a web service on their local machine?
Just put your ip address instead of 'localhost' and that is it. If you have a router at work/home, you need setup it so it route internet calls to your PC.
That is how it works for me right now. I created a WS using Java. Started a server on 8080 port. From my SFDC application I call xx.xx.xx.xx:8080/bla

The request failed with HTTP Status 403: Forbidden when calling a web service

I have a problem when calling a method from an external web service.
The error returned is as follows:
The request failed with HTTP Status 403
My application is deployed using ClickOnce technology. The strange thing is that when I call service (test the code) on my development machine and additionally in test environment (IIS 6, Windows 2003 Server) everything is fine.
Unfortunately when application is in production environment (Windows 2003 Server, IIS 6) the error is returned.
I don't use a service reference to call a web service, instead I use a proxy class generated from wsdl.exe application. Can someone please help me.
EDIT:
I noticed that I can't even access wsdl file using web browser from that production server. This production server is also in different domain.
I found the solution of my problem. It seems that the company that owns the external web service has some kind of access list with IP addresses allowed to access this web service

Testing a remote web service with soapUI

I have a Javax web service deployed in a remote Linux machine within a JBoss ESB container. I am able to test the web service using soapUI on the same machine as where the service is deployed. The WDSL URI I used was something like http://127.0.0.1:8080/abcd/abcd?wsdl.
What I would like to do is to be able to test the same service from another machine using soapUI. I tried replacing 127.0.0.1 with the IP address of the machine where the service is deployed. This does not seem to work. Can someone tell me what I am missing here?
Thanks.
a sum of things could go wrong there - as already mentioned by the others the firewall is blocking access for the given (address, port) pair. Another thing that happened to me was that the WSDL was generated using the name of the machine it was deployed on and whenever I was trying to call the service from a different machine it was complaining that I cannot find the given machine.
You need to test network connectively. One tool you can use is plain old telnet. If you telnet to the ip/port combo of the web server, you will get a response (an HTTP error). For example:
$ telnet 192.168.0.10 8080
If you get nothing then there is almost certainly a firewall blocking access.
If you are convinced that no firewall is blocking you, the other possibility is that the web server is only bound to the local network adapter (127.0.0.1) and not the other network adapters (ethernet/wifi). This is very unlikely however.

Coldfusion REST API returning 'connection failure. status code unavailable.' when called remotely

Now I want to prefix this with I am unsure whether this should be here or on server fault so I'll post it here to begin with.
We are developing a REST API in Coldfusion 9 which is being hosted on IIS 7 for a client which on certain calls must call another internal webservice. When making these calls from the server that the API is hosted on there are no errors, however when we make the call from a remote machine the following message is returned:
'connection failure. status code unavailable.'
I have googled the issue where the following was suggested as a fix http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729 but it does not work for me. The following are the notes from my own testing:
The calls which are causing the issue are a mix of get, put, post and delete.
The only common part of each call is the talking to the same webservice.
I am able to call the webservice directly from the places where I make the remote calls to the API from.
While all the calls make a call to the same webservice they do not all make the same call to the webservice.
Ideas:
Call the web service remotely using a URL that resolves to the internal ColdFusion server (e.g. http://[servername]:8300). You will probably have to some configuration to get this working. Reason for doing so is to identify if IIS or ColdFusion is the root cause. If you can hit the internal server remotely then IIS is probably the issue.
Is the web service call over SSL? If so, is remote caller also ColdFusion? If you've answered both yes, check to see if the SSL certificate is trusted by the remote caller's JVM. If not, you need to register it as part of the JVM's keystore.
Can you ping the host server from the caller? If not, does the caller need a "hosts" entry?
If enabled on your host, review the .NET filter and how it interacts with HTTP calls. I've experienced a situation where I was unable to access a folder called "/bin" because the .NET filter intercepted the requests.
The issue turned out to be that each of the calls required basic authentication which the calls themselves were handling, however basic authentication had been turned on in IIS which was causing IIS to intercept any requests with an Authorization header.
This causes an issue as IIS assumes that if authentication is passed up then it is for a user on that machine/domain and would reject any other credentials (which were valid for the system). It was working when we were logged into the machine because it was coming locally it did not need to authenticate the user.

BizTalk web-service call: unable to connect to remote server

I am trying to call a web service from a BizTalk (2006) orchestration.
Having got the hang of the basics, I have been following this tutorial (page 74 onwards) in which i have a web reference to an external web service (I am using this web service instead of the one in the tutorial), I have my web message in a Send component, and have set up the request / response ports for the web service call.
I'm fairly sure that eveything is set up correctly, but my orchestration fails to call the web service with the following error:
The adapter failed to transmit the message going to send port
"My_Order_Processor.Orchestration-CurrencyConvertPort-36c122f41c5596ae"
with URL "http://www.webservicex/net/CurrencyConvertor.asmx.
WebException: Unable to connect to the remote server.
SocketException: An existing connection was forcibly
closed by the remote host 209.162.186.60:80
The IP 209.162.186.60 is the address for the web service I am trying to connect to. I am trying to narrow down the reasons for the error, e.g.:
Firewall issues
Proxy server issues (I don't know how to configure BizTalk to use a proxy server)
Something else
The BizTalk server can ping the web service, I can access the internet (through IE), I can add the WebReference to the project successfully (meaning at least the orchestration designer can access the web service okay). I have also tried a different web service, with the same result.
Any ideas on finding out why this is happening or how to find out more info? (I'm new to BizTalk)
I've seen this veru vague error before for many different reasons. Two suggestions.
Download something like NetMon and watch what is going on on the wire.
Turn off chunked encoding. For some reason, many web services don't handle this well.
Let us know what you find out.
Could this not be an authentication issue? Check that you can connect to the webservice using the Bts credentials.
This turned out to be a proxy issue.
By navigating to Biz Talk Group -> Platform Settings -> Adapters -> SOAP, I was able to configure the BizTalk server host's SOAP adapter (which is what the web service call uses to make the call) to use our company proxy server correctly. Double click the 'send' SOAP adapter, go to Properties under adapter name.