Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
RaghuVamseedhar
Active Contributor

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

1 Comment
Labels in this area