Using C# to call Odata api in S4 HANA CLOUD Method 1
In some situation like integrating with S4 hana cloud, we need to use C# to call odata in S4 hana cloud(s4hc). For example we need to integration a third party Mes with S4HC and the Mes system is developed in C# . Customer decided to use point to point integration without integration middle ware .Then we need to use C# to call odata in S4HC .
The assumption is that the reader has done the following part :
1, Have created communication system , communication user and communication arrangement in S4HC .
2, Have tested the odata api from postman for the odata api .
The following is the step to call odata api in s4hc by coding in c# with visual studio 2012 .
1 Create a new project in VS2012
[File] > [New]>[Project]
Or Ctrl+ Shift+N
The following is the C# code :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Xml;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
try
{
string url = "https://my3xxxxx-api.saps4hanacloud.cn/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV/A_BillingDocument";
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "GET";
string authorization = "UserName" + ":" + "PassWord";
string base64 = Convert.ToBase64String(Encoding.Default.GetBytes(authorization));
httpRequest.Headers.Add("Authorization", "Basic " + base64);
using (HttpWebResponse myres = (HttpWebResponse)httpRequest.GetResponse())
{
StreamReader sr = new StreamReader(myres.GetResponseStream(), Encoding.UTF8);
string resstring = sr.ReadToEnd();
XmlDocument doc = new XmlDocument();
doc.LoadXml(resstring);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("a", "http://www.w3.org/2005/Atom");
nsmgr.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
nsmgr.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
XmlNodeList nl = doc.SelectNodes("//m:properties", nsmgr);
foreach (XmlNode n in nl)
{
Console.WriteLine(n.SelectSingleNode("//d:BillingDocument", nsmgr).InnerText);
Console.WriteLine(n.SelectSingleNode("//d:CreationDate", nsmgr).InnerText);
Console.WriteLine(n.SelectSingleNode("//d:CreationTime", nsmgr).InnerText);
Console.WriteLine("n");
}
Console.ReadKey();
}
Console.WriteLine("press any key to continue....");
Console.ReadKey();
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
finally
{
}
Console.ReadKey();
}
}
}
After change the correct URL , user name and password, execute the program .
Explanations to the coding :
nsmgr.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
It is name space in the message respond .
Best regards!
Jacky Liu
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
10 | |
7 | |
6 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 |