I am very new to Wm so any help would be appreciated. Have a customer sending an xml file via http post. Am told the content-type=text/xml. The customer gets a 403 returned. I am using IS 6.0.1 with the invoked flow service that has input as node and does a pub.xml:xmlNodeToDocument. It appears the xml file is being rejected but can’t figure out why. Any ideas or pointers as to where/what I might look for?
What is the version of webMethods IS you are on?
What type of HTTP authentication the user is using?Is it type “Basic”?
Try this option just stimulate the same using pub.client:http service and post an sample XML to the target flow service (content-type=text/xml)
And also check what is the invokation flow service ACL (Internal,Anonymous,Default,Administrator etc…)
Please let us know what happens.
Using version 6.0.1 SP2. I’m not sure what you mean by the authentication type as being “Basic”. I have the xml file, is there a way I can look to see? The execute ACL is set to Anonymous.
I did set up a flow service using pub.client:http. The customer, using FTP, sent me the xml file. I used a pub.file:getFile to load the file as bytes and then invoked the target flow service. On the results tab, I still see the 403 error. I am also seeing the Content-Type as text/html. Does this mean the customer didn’t set it to text/xml or am I just doing something wrong? Don’t know if helps but following is what the customer said the settings were when doing the http post:
ACCEPT=<text/html,> CONNECTION=<keep-alive> CONTENT-TYPE=<text/xml> HOST=<xml1trec> USER-AGENT=<java1.3.1_02> CONTENT-LENGTH=<6797>
The type “Basic” means just like normal http authentication.
What is the webMethods “user” ACL set to is it Everybody or Administrator ACL that the customer using.
As you said the customer is using FTP.So is it not HTTP transport?
What is the http method is it “post” or “get” that customer sending.
Try to use method=post and set Content-type=“text/xml” (should be in quotes) and the flow service execute ACL is set to Anonymous should be fine.
Ask the customer to do http post with type=Basic authentication.
Generally HTTP 403 error is caused by access to the resource identified by the URL is forbidden for some reason.
So what is the URL that your customer client is invoking?
Hope you have given the exact syntax of target flowservice invokation as shown below
Please do check this.
The URL is exactly as you showed with the exception of a slash before the servicename instead of a colon.
http://server ip address:port/invoke/folder.subfolder/servicename
Didn’t mean to confuse the issue. As a sidebar, had the customer send me the xml file using ftp. I just wanted it to create a document reference from to use in mapping.
We are using the HTTP transport with the method being “post”.
If I’m using the pub.client:http, where do I set the Content-Type=“text/xml”? Have not seen that anywhere.
I thought if the execute ACL was set to Anonymous, no user or password was required. I do not have a webMethods “user” setup.
I will have the customer do a HTTP post with type=Basic authentication and let you know the results.
Sorry for the lack of understanding but this is all very new to me.
Really appreciating your help and quick responses.
You are clarifying things well.please take it easy.
yes (/)slash is right in the URL,its a typo from me.
In the pub.client:http service you will see a input parmeter called
“data/args”.So under args create a string named Content-type=“text/xml”
This will work.
Under data/args, I created a string named Content-type and placed as its value “text/xml”. Still get the 403 Service Error. I noticed on the pipeline out that under header/lines, I see the string Content-Type=text/html; charset=UTF-8. Not sure where that is coming from.
In my http flow service, I’m doing a pub.file:getFile to get the xml file. I place that into the pipeline out document “body”. Then on the pub.client:http I have the url set to invoke my target flow service, method=post, loadAs=bytes and I have the pipeline in /body/bytes loading to service in /args/bytes. Hope that helps.
just pass /body/bytes to http service (data/bytes) not under data/args/bytes and make Content-Type=“text/xml”
or else convert body/bytes to String (bytesToString) and map to http (data/string).
My typo, it was to (data/bytes) not under (data/args/bytes). I have the Content-Type=“text/xml” but still get the 403 error. Is there anything else I should check?
Sorry,instead of setting Content-Type=text/xml under (data/args) you need to set under header/Content-Type=text/xml of the http service.
And also make sure the invoking service is throwing no errors.
so for testing purpose just disable all the logic in that service and just keep savePipeline and later restore it…You will see the node (object) in the pipeline.
I appologize for confusing.
Moving Content-Type under headers worked like a charm. The return code of 200 is a very welcomed sight. This can only mean that my customer is not setting the Content-Type=text/xml.
I really appreciate all of the help you’ve given me.
Thank you very much