
This blog is about how to consume web services hosted by SAP PI / PO
Direct link: Consume web services hosted by SAP PI PO
Please test these web services in sandbox using SoapUI, as there is little SAP documentation of these web services. SAP may even add more web services in future.
Code used in the video:-
Java Language:-
-----------------------------
package com.web;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.net.URL;
public class TestMain {
public static void main(String[] args) throws Exception {
Authenticator.setDefault(new Authenticator() {
// This method is called when a password-protected URL is accessed
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("UserId", "Password".toCharArray());
}
});
HttpURLConnection con = (HttpURLConnection) new URL("http://Server:50200/ChannelAdminService/ChannelAdmin").openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("content-type", "text/xml");
con.setDoOutput(true);
String s = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:com:sap:netweaver:pi:monitoring\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <urn:getChannelAutomationStatus>" +
" <!--Zero or more repetitions:-->" +
" <channels name=\"CC_File_Sender\" service=\"BC_Test\" party=\"\">" +
" </channels>" +
" </urn:getChannelAutomationStatus>" +
" </soapenv:Body>" +
"</soapenv:Envelope>";
con.getOutputStream().write(s.getBytes());
byte[] b = new byte[con.getInputStream().available()];
con.getInputStream().read(b);
System.out.println(new String(b));
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
Java Language (using WSDL):-
-----------------------------
package com.web;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.ws.BindingProvider;
import com.sap.netweaver.pi.monitoring.ChannelAdminDescriptor;
import com.sap.netweaver.pi.monitoring.ChannelAdminStatus;
import com.sap.pi.monitoring.channel.ChannelAdminService;
import com.sap.pi.monitoring.channel.GetChannelAutomationStatusFault;
import com.sap.pi.monitoring.channel.IChannelAdmin;
public class MyMain {
public static void main(String[] args) throws MalformedURLException, GetChannelAutomationStatusFault {
IChannelAdmin ica = new ChannelAdminService().getChannelAdminPort();
BindingProvider bp = (BindingProvider) ica;
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "UserId");
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "Password");
ChannelAdminDescriptor cad = new ChannelAdminDescriptor();
cad.setName("CC_File_Sender");
cad.setService("BC_Test");
cad.setParty("");
List<ChannelAdminDescriptor> cadL = new ArrayList<ChannelAdminDescriptor>();
cadL.add(cad);
for (ChannelAdminDescriptor c : ica.getChannelAutomationStatus(cadL)) {
System.out.println(c.getName());
System.out.println(c.getService());
List<ChannelAdminStatus> status = c.getStatus();
System.out.println(status.get(0).getActivationState());
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
Go Language:-
-----------------------------
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
in := `<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:com:sap:netweaver:pi:monitoring">
<soapenv:Header/>
<soapenv:Body>
<urn:getChannelAutomationStatus>
<!--Zero or more repetitions:-->
<channels name="CC_File_Sender" service="BC_Test" party="">
</channels>
</urn:getChannelAutomationStatus>
</soapenv:Body>
</soapenv:Envelope>`
req, _ := http.NewRequest("POST", "http://Server:50200/ChannelAdminService/ChannelAdmin", bytes.NewBufferString(in))
req.SetBasicAuth("UserId", "Password")
req.Header.Set("content-type", "text/xml")
client := http.Client{}
res, _ := client.Do(req)
resB, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(resB))
}
Helpful Links: -
User roles required to perform above actions Assigning Permissions - SAP Library
How to use Integration Directory API
Web service navigator: - http://<host>:<port>/wsnavigator .
Single Service Administration: - http://<host>:<port>/nwa/ssadmin
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
6 | |
5 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |