When I call the api to send the invoice without a program middleware .
But when I send the invoice through middleware , it is sent because all the security data is inside this program
This My Code
str destinationUrl = 'api.invoicing.com/.../submission' requestXml, responseXml;
System.Net.HttpWebRequest request;
System.Net.HttpWebResponse response;
CLRObject clrObj;
System.Byte[] bytes;
System.Text.Encoding utf8;
System.IO.Stream requestStream, responseStream;
System.IO.StreamReader streamReader;
System.Exception ex;
System.Net.WebHeaderCollection httpHeader;
str byteStr;
System.Byte[] byteArray;
System.IO.Stream stream;
System.IO.Stream dataStream;
System.Net.NetworkCredential credential;
str token = "xxxxxx" ; // password token
str clientID = "xxxxxxxxxx"; // clientID
str PrimarySecret = "xxxxxxxxxxx"; // clientSecret 1
str SecondSecret = "xxxxxxxxxxx"; // clientSecret 2
try
{
System.Net.ServicePointManager::set_SecurityProtocol(System.Net.SecurityProtocolType::Tls12);
new InteropPermission(InteropKind::ClrInterop).assert();
httpHeader = new System.Net.WebHeaderCollection();
clrObj = System.Net.WebRequest::Create(destinationUrl);
request = clrObj;
utf8 = System.Text.Encoding::get_UTF8();
bytes = utf8.GetBytes(requestXml);
request.set_KeepAlive(true);
request.set_ContentType("application/xml");
utf8 = System.Text.Encoding::get_UTF8();
// byteArray = utf8.GetBytes(clientID+":"+PrimarySecret);
// byteStr = System.Convert::ToBase64String(byteArray);
httpHeader.Add("client_id"+":"+ clientID);
httpHeader.Add("client_secret" +":"+ PrimarySecret);
// httpHeader.Add("client_secret" +":"+ SecondSecret);
httpHeader.Add("Authorization",'Basic' + token);
request.set_UseDefaultCredentials(true);
request.set_PreAuthenticate(true);
request.set_ContentType("application/xml; encoding='utf-8'");
request.set_ContentLength(bytes.get_Length());
request.set_Method("POST");
request.set_Accept("Accept");
request.set_Timeout(3600);
request.set_Headers(httpHeader);
requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.get_Length());
response = request.GetResponse();
responseStream = response.GetResponseStream();
streamReader = new System.IO.StreamReader(responseStream);
responseXml = streamReader.ReadToEnd();
info(responseXml);
}
catch (Exception::CLRError)
{
//bp deviation documented
ex = CLRInterop::getLastException().GetBaseException();
error(ex.get_Message());
}
requestStream.Close();
streamReader.Close();
responseStream.Close();
response.Close();
Proxy servers installed on localhost include client ID, secret key 1, secret key 2, and password token when invoice is successfully sent by the broker
But if you send it directly without a moderator as shown in the above code, the error will be answered (
The remote server returned an error: (401) Unauthorized)
Hi Gadosky,
thanks for the clarification.
Please let us know what differences you find out when you compare the requests from the intermediary service and from AX.
If i call the service directly, it will not work
But if i connect through the intermediary services like (Middleware API ), it will be successful because the service provider’s data is inside the intermediary service, such as (customer ID - secret key, password code)
So you're calling some external service and the call fails? I suggest to discuss with the owner of that service - the issue doesn't really seem to be about AX. The owner of that service should be able to provide help, such as documentation about the service.
I don't understand the description in the beginning of your question, though. Do you already have some way to call the service succesfully? What differences do you see in the succesful vs failing request?
Stay up to date on forum activity by subscribing. You can also customize your in-app and email Notification settings across all subscriptions.
André Arnaud de Cal... 291,253 Super User 2024 Season 2
Martin Dráb 230,188 Most Valuable Professional
nmaenpaa 101,156