SAP DI Server - How to issue first request? - soap

I have set up a Windows server using SAP Business One, and am trying to fire up the DI Server.
I would like to make a HTTP request with a SOAP body, but I don't know what URL to put in postman.
I also can't figure out how to run the example files in the installation folder for DI Server.
Does anyone know how to get started with DI Server?

Unless you are also using B1WS, starting the DI-Server service doesn't give you a listening HTTP server. You need to write your own listener, for instance as a simple .ashx page hosted under IIS, which accepts a request and passes it to the Interact method of the SBODI_Server.Node object.
See: https://blogs.sap.com/2014/07/28/connecting-an-add-on-to-sap-business-one/

Related

Local WSDL vs downloaded remotely from server?

I was recently working quite a lot on SOAP web services and one question bothers me in that context. What would be better?
A. Get the WSDL and store it locally on client side and then only make calls to the service
if server keeps backward compatibility the client will still work with the old WSDL even when server side provided new version (of service and WSDL).
you are not able to get endpoint URL from WSDL so if service endpoint location has changed (but WSDL not) you need to reconfigure the client.
no additional call to the server
B. Use WSDL location as remote resource (HTTP) and download WSDL each time client instance is created?
What are some pros and cons?
Which is better depends on your setup and your needs but personally I would prefer having the WSDL locally, inside the client for these reasons:
no extra call to the server to get the WSDL (as you mentioned);
if server keeps backward compatibility the local WSDL will still be OK to use (as you mentioned);
if the service WSDL changes in an incompatible way and your client suddenly starts to fail you still have the old WSDL locally and you can compare it with the new one to see what's different.
The following point is usually not an issue:
you are not able to get endpoint URL from WSDL so if service endpoint location has changed (but WSDL not) you need to reconfigure the client.
The endpoint URL in the WSDL is not always correct and even if it was, you normally have the WSDL accessible at the same URL as the service by just sticking a ?wsdl parameter after it so if the location changes you won't find the service but you wont find the WSDL either. The service endpoint URL needs to be configurable in your client anyways.

Monitoring SOAP with zabbix

As i understand from documents, zabbix has made it possible to monitor SOAP web service by using custom headers from v2.4. but it has no clear explanation on how to do this!!can anyone explain more about this?
UPDATE: i have SOAP web service on a port on my localhost.can i monitor it's performance using zabbix 2.4?!
SOAP request usually needs custom header, e.g.:
Content-Type: application/soap+xml
You can define this custom header(s) in the Zabbix 2.4 Webmonitoring. But keep in mind, that Webmonitoring is executed from the Zabbix server (or proxy) only. Make sure, that your soap server is reachable from the Zabbix server (proxy) and only then you can use Webmonitoring. Otherwise (if service is localhost only) you have to use checks, which are executed from the zabbix agent (net.tcp.service.perf, UserParameters) and in that case you can have a problem with headers.
It depends how deeply you want to monitor your SOAP service. If it's only http connection time, then you don't need a Webmonitoring (net.tcp.service.perf is enough). If you want create some special SOAP request with response content check, then Webmonitoring is right choice for you.
Docs:
https://www.zabbix.com/documentation/2.4/manual/web_monitoring
https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/zabbix_agent

How can i receive the REST API request in Mule?

I have used local JIRA Server and i am using Webhook integration concept in JIRA. Here i am giving the Webhook URL is "localhost:8081/webhook" and Event is Create and Update issue. when i am create or update issue means it will be pass to "localhost:8081/webhook". The same address only i gave in mule also but its not working in my MULE. Mule didn't listen the webservice. How can i USE REST API in mule. Which flow is used for receive the JSON format REST API data. It's possible means how can i do this work.
By far the easiest way to do this in Mule now is to use the new Api Kit and write your service description in RAML.
Intro material with docs and examples at: ww.mulesoft.org/documentation/display/current/APIkit
The mule http components may be outboud e.g call your rest api or inbound where the mule server will listen for an event on a http port and url
You say mule is not listening, you should be able to quite simply setup a mule inbound http component flow .. and trigger this flow by pointing your browser at it. I think you will find mule is listening correctly, and you may have mis-configured some of your settings?

Access Wsdl web service client side GWT

I'm working in an GWT 2.4 project. I want to access to a SOAP service. I used wsdl2java to generate classes of the service (servicestub, servicelocator, ...). But this code is server side. How can I do to access the service on the client-side?
There are some problems in Calling Cross Domain Web Services in AJAX. You can read answer on this question: Accessing web Service from jQuery - cross domain. But you can call server method using RPC. And then server get data from SOAP and return to client.
Its really tricky to do that (I'm even not sure if its possible) and I would prefer to wrap the SOAP call into a server side service and call that from you client.

Apache can't send request to localhost:8080 (to use Mule Esb Flow)

I'm trying to use a sample web application that use Ajax to send a request to a php REST service.
I need to use Mule ESB to do this, so i fix my ajax function to send request to ESB on localhost:8080. But the browser said that i can't do this for security reason.
So, there are any way to use mule ESB with a web app (local appache server) locally ?
Trying to GET a resource from the same host but from a different port is considered cross scripting as explained here
If you want to retrieve it you can:
all the option listed at the above link
put mule behind a reverse proxy within your apache configuration
serve all the content via mule