Page 1 of 2
Post XML-file
Posted: Mon Jan 29, 2018 3:51 pm
by Anonymous
Dear
I want to post XML-data with a header 'user' and 'passw' and get the response.
I have created a simple example, but it is not working.
1. Is there an InternetConnect needed for user & pasw ?
2. Is the "Encoding" necessary ?
Can you improve it or is in X# an other example ?
Thanks,
Johan Kwaspen
static method DoPost() as void
local request as system.Net.WebRequest
local requestStream as system.io.Stream
local response as system.Net.WebResponse
local cpostData as string
local bytes as byte[]
cPostData := memoread("U:AppDataRoamingdtbs.xml")
// Create a request using a URL that can receive a post.
request := system.Net.WebRequest.Create("
https://qqq.xxx.nl/scan/index/xml/")
bytes := System.Text.Encoding.ASCII.GetBytes(cPostData)
request.ContentType := "text/xml; encoding='utf-8'"
request.ContentLength := bytes.Length
request.Method := "POST"
requestStream := request.GetRequestStream()
requestStream.Write(bytes, 0, bytes.Length)
requestStream.Close()
response := request.GetResponse()
*if (response.StatusCode == HttpStatusCode.OK)
** Stream responseStream = response.GetResponseStream()
* string responseStr = new StreamReader(responseStream).ReadToEnd()
* return responseStr
*endif
return
Post XLM-file
Posted: Mon Jan 29, 2018 4:49 pm
by ic2
Hello Johan,
A quick check with
https://stackoverflow.com/questions/175 ... in-c-sharp, first answer, learned that it's about the same you do but you do not have the Close commands at the end.
If the server only grants access with a password, you have to supply. I use json exchange with the WebClient (in C#) and
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Credentials = new NetworkCredential("user", "password");
See
https://stackoverflow.com/questions/433 ... entication for more detail about credentials with XML.
Dick
Post XLM-file
Posted: Tue Jan 30, 2018 1:52 pm
by JKW
Thanks Dick
I have changed the code, what do you think could work like that?
The response from the website is:
"An unexpected error occurred during the shipment"
But this can also be on the website.
thanks for the help.
Johan Kwaspen
Code: Select all
static method DoPost() as void
local oClient as system.net.WebClient
local cpostData as string
local XML_bytes as byte[]
local response as byte[]
local username as string
local password as string
local oCred as system.Net.NetworkCredential
username := "88195"
password := "test1234"
cPostData := memoread("U:AppDataRoamingTEST_dtbs.xml")
oClient := system.net.WebClient{}
oCred := system.Net.NetworkCredential{"","",""}
oCred.domain := "uat.webpage.be"
oCred.username := username
oCred.password := password
response := null_object
XML_bytes := System.Text.Encoding.ASCII.GetBytes(cPostData)
oclient.Credentials := (oCred)
oClient.Headers.Add("Content-Type", "application/json")
try
response := oClient.uploaddata("https://uat.webpage.be/scan/index/xml", "POST", ML_bytes)
catch oException as Exception
System.Console.WriteLine(oException:Message)
System.Console.WriteLine(response:ToString())
end try
Post XLM-file
Posted: Tue Jan 30, 2018 2:01 pm
by wriedmann
Hi Johan,
maybe I'm totally misunderstanding: you are sending a XML file, but you are declaring it as application/json?
Wolfgang
Post XLM-file
Posted: Tue Jan 30, 2018 2:09 pm
by JKW
Hello Wolfgang
It should be:
But the error is the same.
Thanks !
Code: Select all
oClient.Headers.Add("Content-Type", "text/xml; encoding='utf-8'" )
Post XLM-file
Posted: Tue Jan 30, 2018 2:12 pm
by wriedmann
Hi Johan,
you are using Encoding.ASCII (that is 7 bit), but are specifying it as UTF-8.
You should use Encoding.UTF8 for the GetBytes() method.
I don't know it this is the real error, but it could be.
Wolfgang
Post XLM-file
Posted: Tue Jan 30, 2018 2:22 pm
by JKW
Hello Wolfgang
I changed it, but the same error.
When the XML is sent in UTF8-bytes, the site must also translate it back to an XML-files?
Thanks !
Johan Kwaspen
Post XLM-file
Posted: Tue Jan 30, 2018 2:29 pm
by wriedmann
Hi Johan,
normally the encoding must be specified. So if you are specifying UTF8, your byte stream needs to be in UTF8, and the receiving party needs to be convert it back.
Do you can contact the other side to understand what is wrong? If they expect a JSON file and you are sending an XML, there will be an error.
Currently I'm battling with the webservice of a supplier, and if I don't send a wellformed XML, their client performs an exception with "HTTP status 500: an internal server error occured".
Wolfgang
Post XLM-file
Posted: Tue Jan 30, 2018 2:36 pm
by JKW
Hello Wolfgang
I will contact the other side, and see what they receive.
Is it also possible to send an XML without encoding ?
I expect them to ask for this.
I'll keep you informed
Johan
Post XLM-file
Posted: Tue Jan 30, 2018 2:47 pm
by wriedmann
Hi Johan,
you need to specify the encoding because you are using a binary transport medium.
The same thing would true if you wrote to disk.
Maybe you check this topic:
https://docs.xsharp.it/doku.php?id=encodings
Wolfgang