Converted WSDL to API with the wizard. Where to enter Username and Password?

Not applicable

Converted WSDL to API with the wizard. Where to enter Username and Password that usually can be entered? (in SoapUI it can be entered on a separate place.. not in the request itself. Thank you. (I use the free apigee on the web)

0 13 1,302
13 REPLIES 13

Not applicable

That depends on how your SOAP service is protected (Authenticated)

If your SOAP service is protected using Basic Auth, the username password are passed as part of Authorization Header. It will be the same way for your REST API also (unless you want to mediate that and transform that to OAuth etc). Most of the standard REST clients will allow you to pass the basic auth headers.

I use Postman as my REST client. Attached the screenshot of how you can send the basic auth header using Postman

postman-client-basic-auth-headers.png

You can also add the authentication header with a policy. You can either use basic authentication policy as documented here. Or you can use AssignMessage policy to set username and password like below ::

    <Add>
        <Headers>
          <Header name="userName">sarthak@apigee.com</Header>
          <Header name="Password">pass1234</Header>
        </Headers>
    </Add>     

Not applicable

Hi,

Thank you for the answers..

It makes no difference what I do..

If I add basic authentication policy - I still get 404. The other one (assign message) - same result..

HTTP/1.1 404 Resource not found.

Content-Length:
126
Connection:
keep-alive
Content-Type:
application/json
{
  "fault": {
    "faultstring": "Raising fault. Fault name : unknown-resource",
    "detail": {
      "errorcode": "messaging.runtime.RaiseFault"
    }
  } 

}

I can send the wsdl, and in soap uI - it works. maybe you can simulate?

I also took the CA from apigee (browser) - and entered it to SAP.. but it does not work.

Thanks,

Doron

@doron zaccai - the response you show there appears to have been generated by the Apigee Edge runtime. In other words it's not an issue of authentication of the backend soap service. To diagnose this, I'd want to look at the Trace window for the given API proxy, while a request is made, to see where exactly the Fault is occurring.

Not applicable

here is the trace:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <DebugSession> <Retrieved>2015-05-28T22:30:29.214Z</Retrieved> <Organization>doronzaccai</Organization> <Environment>test</Environment> <API>DVPSFDCAPIServiceInterfaceService-2</API> <Revision>1</Revision> <SessionId>1432852205872</SessionId> <Messages> <Message> <DebugId>7dc60f5e-a8ad-43fa-af1b-4e8034e42ef6__4149</DebugId> <Data> <Completed>true</Completed> <Point id="Paused"/> <Point id="Resumed"/> <Point id="StateChange"> <DebugInfo> <Timestamp>28-05-15 22:30:22:546</Timestamp> <Properties> <Property name="To">REQ_HEADERS_PARSED</Property> <Property name="From">REQ_START</Property> </Properties> </DebugInfo> <RequestMessage> <Headers> <Header name="Accept">*/*</Header> <Header name="Accept-Encoding">gzip,deflate</Header> <Header name="Connection">keep-alive</Header> <Header name="Host">doronzaccai-test.apigee.net</Header> <Header name="User-Agent">NING/1.0</Header> <Header name="X-Apigee-Trace-Id">73c3fe8b-d9a2-4cd8-b328-62f678dd17f3</Header> <Header name="X-Apigee.application">DVPSFDCAPIServiceInterfaceService-2</Header> <Header name="X-Apigee.environment">test</Header> <Header name="X-Apigee.organization">doronzaccai</Header> <Header name="X-Apigee.proxy">default</Header> <Header name="X-Apigee.revision">1</Header> <Header name="X-Apigee.router.host">rrt17apigee</Header> <Header name="X-Apigee.router.uuid">276741ef-78e0-4b92-ae35-0ab94dd5684b</Header> <Header name="X-Apigee.vhost">default</Header> </Headers> <URI>/dvpsfdcapiserviceinterfaceservice-2</URI> <Verb>GET</Verb> </RequestMessage> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="environment.name">test</Property> <Property name="environment.qualifiedname">doronzaccai__test</Property> <Property name="environment.orgname">doronzaccai</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="organization.name">doronzaccai</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="apiproxy.qualifiedname">DVPSFDCAPIServiceInterfaceService-2__1</Property> <Property name="apiproxy.basepath">/</Property> <Property name="apiproxy.revision">1</Property> <Property name="apiproxy.name">DVPSFDCAPIServiceInterfaceService-2</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="proxy.basepath">/dvpsfdcapiserviceinterfaceservice-2</Property> <Property name="proxy.pathsuffix"></Property> <Property name="proxy.url">http://rrt17apigee.us-ea.4.apigee.com/dvpsfdcapiserviceinterfaceservice-2</Property> <Property name="proxy.name">default</Property> <Property name="proxy.client.ip">54.210.253.178</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="virtualhost.port">80</Property> <Property name="virtualhost.name">default</Property> <Property name="virtualhost.ssl.enabled">false</Property> <Property name="virtualhost.aliases">{doronzaccai-test.apigee.net}</Property> <Property name="virtualhost.ip">192.168.5.46</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties/> </DebugInfo> </Point> <Point id="StateChange"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="To">PROXY_REQ_FLOW</Property> <Property name="From">REQ_HEADERS_PARSED</Property> </Properties> </DebugInfo> <RequestMessage> <Headers> <Header name="Accept">*/*</Header> <Header name="Accept-Encoding">gzip,deflate</Header> <Header name="Connection">keep-alive</Header> <Header name="Host">doronzaccai-test.apigee.net</Header> <Header name="User-Agent">NING/1.0</Header> <Header name="X-Apigee-Trace-Id">73c3fe8b-d9a2-4cd8-b328-62f678dd17f3</Header> </Headers> <URI>/dvpsfdcapiserviceinterfaceservice-2</URI> <Verb>GET</Verb> </RequestMessage> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="ExpressionResult">true</Property> <Property name="Expression">("default" equals proxy.name)</Property> <Property name="Tree">PROXY_default</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="default" name="proxy.name"/> </VariableAccess> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="proxy.flow.name">PreFlow</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="current.flow.name">PreFlow</Property> </Properties> </DebugInfo> </Point> <Point id="Execution"> <DebugInfo> <Timestamp>28-05-15 22:30:22:547</Timestamp> <Properties> <Property name="action">CONTINUE</Property> <Property name="stepDefinition-async">false</Property> <Property name="internal">false</Property> <Property name="stepDefinition-type">assignmessage</Property> <Property name="type">AssignMessageExecution</Property> <Property name="enforcement">request</Property> <Property name="stepDefinition-continueOnError">true</Property> <Property name="stepDefinition-displayName">Save Message</Property> <Property name="stepDefinition-name">save-message</Property> <Property name="stepDefinition-enabled">true</Property> <Property name="result">true</Property> </Properties> </DebugInfo> <RequestMessage> <Headers> <Header name="Accept">*/*</Header> <Header name="Accept-Encoding">gzip,deflate</Header> <Header name="Connection">keep-alive</Header> <Header name="Host">doronzaccai-test.apigee.net</Header> <Header name="User-Agent">NING/1.0</Header> <Header name="X-Apigee-Trace-Id">73c3fe8b-d9a2-4cd8-b328-62f678dd17f3</Header> </Headers> <URI>/dvpsfdcapiserviceinterfaceservice-2</URI> <Verb>GET</Verb> </RequestMessage> <VariableAccess> <Get value="GET" name="request.verb"/> <Set success="true" value="GET" name="save.request.verb"/> </VariableAccess> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:548</Timestamp> <Properties> <Property name="ExpressionResult">false</Property> <Property name="Expression">(proxy.pathsuffix matches /dvpsfdcapiserviceinterface and (request.verb equals "GET"))</Property> <Property name="Tree">DVPSFDCAPIServiceInterface_REQUEST_FLOW</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="" name="proxy.pathsuffix"/> </VariableAccess> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:548</Timestamp> <Properties> <Property name="proxy.flow.name">unknown-resource</Property> <Property name="proxy.flow.description">Unknown Resource</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:548</Timestamp> <Properties> <Property name="current.flow.name">unknown-resource</Property> <Property name="current.flow.description">Unknown Resource</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:548</Timestamp> <Properties> <Property name="raisefault.unknown-resource.fault.name"></Property> <Property name="raisefault.unknown-resource.failed">true</Property> <Property name="raisefault.unknown-resource.fault.cause"></Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="Identifier">fault</Property> </Properties> </DebugInfo> </Point> <Point id="Error"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="error">Raising fault. Fault name : unknown-resource</Property> <Property name="type">ErrorPoint</Property> <Property name="state">PROXY_REQ_FLOW</Property> <Property name="error.class">com.apigee.kernel.exceptions.spi.UncheckedException</Property> </Properties> </DebugInfo> </Point> <Point id="Execution"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="action">ABORT</Property> <Property name="stepDefinition-async">false</Property> <Property name="internal">false</Property> <Property name="stepDefinition-type">raisefault</Property> <Property name="type">RaiseFaultExecution</Property> <Property name="enforcement">request</Property> <Property name="stepDefinition-continueOnError">false</Property> <Property name="stepDefinition-displayName">Unknown Resource</Property> <Property name="stepDefinition-name">unknown-resource</Property> <Property name="stepDefinition-enabled">true</Property> <Property name="result">false</Property> </Properties> </DebugInfo> <ErrorMessage> <Content>{"fault":"{\"detail\":{\"errorcode\":\"messaging.runtime.RaiseFault\"},\"faultstring\":\"Raising fault. Fault name : unknown-resource\"}"}</Content> <Headers> <Header name="Content-Type">application/json</Header> </Headers> <ReasonPhrase>Resource not found.</ReasonPhrase> <StatusCode>404</StatusCode> </ErrorMessage> <VariableAccess> <Set success="true" value="true" name="raisefault.failed"/> <Get name="raisefault.unknown-resource"/> <Get name="apigee.edge.execution"/> <Get value="rrt17apigee_BTTKJPMg_RouterProxy-2-3629947_1" name="messageid"/> </VariableAccess> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="ExpressionResult">true</Property> <Property name="Expression">((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))</Property> <Property name="Tree">PROXY_FAULT_HANDLING</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="PROXY_REQ_FLOW" name="error.state"/> </VariableAccess> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="ExpressionResult">true</Property> <Property name="Expression">("default" equals proxy.name)</Property> <Property name="Tree">PROXY_default</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="default" name="proxy.name"/> </VariableAccess> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="ExpressionResult">false</Property> <Property name="Expression">(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))</Property> <Property name="Tree">TARGET_FAULT_HANDLING</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="PROXY_REQ_FLOW" name="error.state"/> <Get value="PROXY_REQ_FLOW" name="error.state"/> <Get value="PROXY_REQ_FLOW" name="error.state"/> <Get value="PROXY_REQ_FLOW" name="error.state"/> </VariableAccess> </Point> <Point id="StateChange"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="To">RESP_SENT</Property> <Property name="From">ERROR</Property> </Properties> </DebugInfo> <ErrorMessage> <Content>{"fault":"{\"detail\":{\"errorcode\":\"messaging.runtime.RaiseFault\"},\"faultstring\":\"Raising fault. Fault name : unknown-resource\"}"}</Content> <Headers> <Header name="Content-Type">application/json</Header> </Headers> <ReasonPhrase>Resource not found.</ReasonPhrase> <StatusCode>404</StatusCode> </ErrorMessage> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="ExpressionResult">true</Property> <Property name="Expression">("default" equals proxy.name)</Property> <Property name="Tree">PROXY_default</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="default" name="proxy.name"/> </VariableAccess> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="ExpressionResult">false</Property> <Property name="Expression">("default" equals target.name)</Property> <Property name="Tree">TARGET_default</Property> </Properties> </DebugInfo> <VariableAccess> <Get name="target.name"/> </VariableAccess> </Point> <Point id="StateChange"> <DebugInfo> <Timestamp>28-05-15 22:30:22:549</Timestamp> <Properties> <Property name="To">END</Property> <Property name="From">RESP_SENT</Property> </Properties> </DebugInfo> <ErrorMessage> <Content>{"fault":"{\"detail\":{\"errorcode\":\"messaging.runtime.RaiseFault\"},\"faultstring\":\"Raising fault. Fault name : unknown-resource\"}"}</Content> <Headers> <Header name="Content-Type">application/json</Header> </Headers> <ReasonPhrase>Resource not found.</ReasonPhrase> <StatusCode>404</StatusCode> </ErrorMessage> </Point> <Point id="DebugMask"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="SuccessFullyMaskedConfigs">[]</Property> </Properties> </DebugInfo> </Point> <Point id="Resumed"/> <Point id="StateChange"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="To">PROXY_POST_RESP_SENT</Property> <Property name="From">END</Property> </Properties> </DebugInfo> <ErrorMessage> <Headers> <Header name="Content-Length">126</Header> <Header name="Content-Type">application/json</Header> <Header name="X-Apigee.Message-ID">rrt17apigee_BTTKJPMg_RouterProxy-2-3629947_1</Header> </Headers> <ReasonPhrase>Resource not found.</ReasonPhrase> <StatusCode>404</StatusCode> </ErrorMessage> </Point> <Point id="Condition"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="ExpressionResult">true</Property> <Property name="Expression">("default" equals proxy.name)</Property> <Property name="Tree">PROXY_default</Property> </Properties> </DebugInfo> <VariableAccess> <Get value="default" name="proxy.name"/> </VariableAccess> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="proxy.flow.name">PostClientFlow</Property> </Properties> </DebugInfo> </Point> <Point id="FlowInfo"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="current.flow.name">PostClientFlow</Property> </Properties> </DebugInfo> </Point> <Point id="Paused"/> <Point id="Execution"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="expressionResult">true</Property> <Property name="type">AnalyticsPredefinedVariablesPublisher</Property> <Property name="expression">(analytics equals null )</Property> </Properties> </DebugInfo> <ErrorMessage> <Headers> <Header name="Content-Length">126</Header> <Header name="Content-Type">application/json</Header> <Header name="X-Apigee.Message-ID">rrt17apigee_BTTKJPMg_RouterProxy-2-3629947_1</Header> </Headers> <ReasonPhrase>Resource not found.</ReasonPhrase> <StatusCode>404</StatusCode> </ErrorMessage> <VariableAccess/> </Point> <Point id="Resumed"/> <Point id="Execution"> <DebugInfo> <Timestamp>28-05-15 22:30:22:550</Timestamp> <Properties> <Property name="expressionResult">false</Property> <Property name="type">AnalyticsPublisher</Property> <Property name="expression">(analytics not null)</Property> </Properties> </DebugInfo> <ErrorMessage> <Headers> <Header name="Content-Length">126</Header> <Header name="Content-Type">application/json</Header> <Header name="X-Apigee.Message-ID">rrt17apigee_BTTKJPMg_RouterProxy-2-3629947_1</Header> </Headers> <ReasonPhrase>Resource not found.</ReasonPhrase> <StatusCode>404</StatusCode> </ErrorMessage> <VariableAccess> <Get value="doronzaccai" name="organization.name"/> <Get value="test" name="environment.name"/> <Get value="doronzaccai" name="organization.name"/> <Get value="test" name="environment.name"/> <Get value="DVPSFDCAPIServiceInterfaceService-2" name="apiproxy.name"/> <Get value="1" name="apiproxy.revision"/> <Get value="default" name="proxy.name"/> <Get value="/dvpsfdcapiserviceinterfaceservice-2" name="proxy.basepath"/> <Get value="" name="proxy.pathsuffix"/> <Get name="request.header.X-Forwarded-For"/> <Get value="54.210.253.178" name="proxy.client.ip"/> <Get name="target.name"/> <Get name="target.basepath"/> <Get name="target.url"/> <Get name="target.host"/> <Get name="target.ip"/> <Get value="54.210.253.178" name="client.ip"/> <Get value="true" name="is.error"/> <Get value="1" name="apigee.edge.execution.is_policy_error"/> <Get value="0" name="apigee.edge.execution.is_target_error"/> <Get name="target.sent.start.timestamp"/> <Get name="target.sent.end.timestamp"/> <Get name="target.received.start.timestamp"/> <Get name="target.received.end.timestamp"/> <Get value="1432852222545" name="client.received.start.timestamp"/> <Get value="1432852222546" name="client.received.end.timestamp"/> <Get value="1432852222550" name="client.sent.start.timestamp"/> <Get value="1432852222550" name="client.sent.end.timestamp"/> <Get value="404" name="message.status.code"/> <Get value="/dvpsfdcapiserviceinterfaceservice-2" name="request.uri"/> <Get value="/dvpsfdcapiserviceinterfaceservice-2" name="request.path"/> <Get value="GET" name="request.verb"/> <Get value="default" name="virtualhost.name"/> <Get name="apigee.developer.app.name"/> <Get name="apigee.apiproduct.name"/> <Get name="apigee.access_token"/> <Get name="apigee.client_id"/> <Get name="flow.resource.name"/> <Get value="rrt17apigee_BTTKJPMg_RouterProxy-2-3629947_1" name="messageid"/> <Get name="sla"/> <Get value="0" name="client.received.content.length"/> <Get name="target.received.content.length"/> <Get name="cachehit"/> <Get name="responsecache.executed"/> <Get name="responsecache.cachename"/> <Get name="responsecache.cachekey"/> <Get name="responsecache.cachesource"/> <Get name="responsecache.l1.count"/> <Get name="apigee.developer.id"/> <Get name="target.response.status.code"/> <Get name="request.header.X-Forwarded-For"/> <Get name="apigee.developer.email"/> <Get value="NING/1.0" name="request.header.User-Agent"/> <Get name="request.header.X-Apigee-Client-Device-Id"/> <Get name="request.header.X-Apigee-Client-Session-Id"/> <Get name="request.header.X-Apigee-Client-Org-Name"/> <Get name="request.header.X-Apigee-Client-App-Name"/> <Get name="request.header.X-Apigee-Client-Request-Id"/> <Get value="messaging.runtime.RaiseFault" name="apigee.edge.execution.fault_code"/> <Get value="0" name="apigee.edge.execution.is_apigee_fault"/> <Get value="us-east-1" name="system.region.name"/> <Get value="unknown-resource" name="apigee.edge.execution.fault_policy_name"/> <Get value="unknown-resource" name="apigee.edge.execution.fault_flow_name"/> <Get value="PROXY_REQ_FLOW" name="apigee.edge.execution.fault_flow_state"/> <Get name="x-apigee.edge.true_client_ip"/> <Get name="analytics"/> </VariableAccess> </Point> <Point id="Paused"/> </Data> </Message> </Messages> </DebugSession>

Not applicable

Request Received from Client

GET /dvpsfdcapiserviceinterfaceservice-2

Request Headers

Accept

Request Content

Body

Properties

environment.name test environment.qualifiedname doronzaccai__test environment.orgname doronzaccai organization.name doronzaccai apiproxy.qualifiedname DVPSFDCAPIServiceInterfaceService-2__1 apiproxy.basepath apiproxy.revision apiproxy.name DVPSFDCAPIServiceInterfaceService-2 proxy.basepath /dvpsfdcapiserviceinterfaceservice-2 proxy.pathsuffix proxy.url http://rrt17apigee.us-ea.4.apigee.com/dvpsfdcapiserviceinterfaceservice-2 proxy.name default proxy.client.ip virtualhost.port virtualhost.name default virtualhost.ssl.enabled false virtualhost.aliases {doronzaccai-test.apigee.net} virtualhost.ip

Not applicable

dvpsfdcapiserviceinterfaceservice.txt

this is the wsdl, (change the extention to wsdl in stead of txt).

This seems to be better - if you can import it yourself as wsdl file.

Indeed, I see that it is not getting to the authentication. But I was hoping to just use the wizard, and get it running. The wsdl is a proper export of the "sender agreement" of SAP PO 7.4

I wonder if you can simulate it.. and see why it get stuck.

Thank you.

Doron.

msebai
New Member

Trace shows that you're not querying any API resource / web service operation. Try:

GET /dvpsfdcapiserviceinterfaceservice-2/DVPSFDCAPIServiceInterface

Not applicable

Hi All,

Thank you for the input and advice I'm slowly making progress.

I have change the interface name and Operation name, so it would be more clear how to construct the link.

2 errors left:

True, the ping.. is going all right with the following:

- When using the Apigee Console : Basic Authentication, the ping is going through "200 OK"

But when I use the trace facility... I see that "assign message 1" AND "Basic Authentication" policy - has been automatically added, and it does not go through to the 200 OK, and the unknown resource is appearing:

{"fault":"{\"detail\":{\"errorcode\":\"messaging.runtime.RaiseFault\"},\"faultstring\":\"Raising fault. Fault name : unknown-resource\"}"}

How to solve that?

- I have put a default in SAP to return orders of customer x. But when I specify on the Console (where I get the 200 OK) a different customer, I notice that customer Y is not passed to the request.

I see in the trace policies of the : Build Soap: (see highlight)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="true" enabled="true" name="GetOrderListPerCustomerOperation-build-soap"> <DisplayName>GetOrderListPerCustomerOperation Build SOAP</DisplayName> <Add> <Headers> <Header name="SOAPAction">http://sap.com/xi/WebService/soap1.1</Header> </Headers> </Add> <Set> <Headers> <Header name="Content-Type">text/xml; charset=utf-8</Header> </Headers> <Payload contentType="text/xml">

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <DVP_SalesOrderRequest xmlns="urn:dvpsfdc.com/sdo" xmlns:DVP_SalesOrderRequest="urn:dvpsfdc.com/sdo"> <!--Required-->

<CustomerID>{CustomerID}</CustomerID>

</DVP_SalesOrderRequest> </soap:Body> </soap:Envelope> </Payload> <Verb>POST</Verb> </Set> <AssignVariable> <Name>forward.target.url</Name> <Value>http://pi74.sapaccess.com:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=DVP_SFDC&receiverParty=&receiverService=&interface=DVPSFDCAPIServiceInterface&interfaceNamespace=urn%3Advpsfdc.com%2Fsdo</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>

How to fill this variable?

- If I add.. "?CustomerID=0000002200" at the end of the "link".. it does not pass.. (I get the default)

- If I fill the xml above with a constant.0000002200..it returns the same, so not passed.

- if I use the "header" fields in the Apigee Console, field name CustomerID and value 0000002200 it does not pass as well.

In SoapUI it works fine.

How can I get the value to pass?

The console left side:

GET /dvpsfdcapiserviceinterfaceservice5/orderlistpercustomeroperation?CustomerID=0000002200 HTTP/1.1

Authorization:
Basic UDc0MDAxMDExOjRBbXN0ZXJkYW0kJA==
Host:
doronzaccai-test.apigee.net
CustomerID:
0000002200
X-Target-URI:
http://doronzaccai-test.apigee.net
Connection:
Keep-Alive

Right Side:

HTTP/1.1 200 OK

content-type:
application/json
content-id:
<soap-cc6ed4b1062b11e58a5e000000694b46@sap.com>
Access-Control-Max-Age:
3628800
date:
Fri, 29 May 2015 17:54:48 GMT
Access-Control-Allow-Methods:
GET, PUT, POST, DELETE
content-description:
SOAP
Connection:
keep-alive
Access-Control-Allow-Headers:
origin, x-requested-with, accept
set-cookie:
MYSAPSSO2=AjExMDAgABBwb3J0YWw6UDc0MDAxMDExiAAHZGVmYXVsdAEACVA3NDAwMTAxMQIAAzAwMAMAA1A3NAQADDIwMTUwNTI5MTc1NAUABAAAAAgKAAlQNzQwMDEwMTH%2FAQQwggEABgkqhkiG9w0BBwKggfIwge8CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGBzzCBzAIBATAiMB0xDDAKBgNVBAMTA1A3NDENMAsGA1UECxMESjJFRQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwNTI5MTc1NDQ4WjAjBgkqhkiG9w0BCQQxFgQUSKtDQrP6!gkXZvNPJpQKIMzSXLgwCQYHKoZIzjgEAwQuMCwCFFcZ9BDGWm8iS63AxC0K5RTP89P3AhQzGS0OSZTY!LquBSsc%2Fj2W3rFnQw%3D%3D;path=/;domain=.sapaccess.com;HttpOnly
set-cookie:
saplb_*=(PI74_P74_00)6900550; Version=1; Path=/
set-cookie:
JSESSIONID=DYIB9n7VArv3wozep2kmSfV-48-gTQFGS2kA_SAPSELDhZN8ibmPicn3Wp3spetx; Version=1; Path=/
set-cookie:
JSESSIONMARKID=aU6rkARiOoQIeTORwYgmsE-cex1vACz4Rem0ZLaQA; Version=1; Path=/
Access-Control-Allow-Origin:
*
content-length:
20829
content-disposition:
attachment;filename="soap-cc6ed4b1062b11e58a5e000000694b46@sap.com.xml"
server:
SAP NetWeaver Application Server 7.40 / AS Java 7.40
{
  "SalesOrderByIDResponse": {
    "MessageHeader": {
      "ID": {},
      "CreationDateTime": "2015/05/29"

Thank you,

Doron

msebai
New Member

Hi Doron,

If I understand your question correctly, you want to pass CustomerID query parameter to the web service as part of the SOAP envelope? To do that, first use the Extract Variable policy to assign parameter to a runtime variable.

<ExtractVariables name="ExtractVariables-1">
   <DisplayName>Extract a value from a query parameter</DisplayName>
   <Source>request</Source>
   <QueryParam name="CustomerID">
      <Pattern ignoreCase="true">{CustomerID}</Pattern>
   </QueryParam>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

then you can access this variable in the Build SOAP policy:

<CustomerID>{CustomerID}</CustomerID>

Not applicable

Hi All,

Still trying, but it's not working. I applied the above, but still stuck at the parameter that is not passing.

There is an "automatic" generated extract variable.

Looks like:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<ExtractVariables async="false" continueOnError="true" enabled="true"

name="GetOrderListPerCustomerOperation-extract-query-param">

<DisplayName>GetOrderListPerCustomerOperation Extract Query Param</DisplayName>

<QueryParam name="CustomerID">

<Pattern ignoreCase="true">{CustomerID}</Pattern>

</QueryParam>

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

</ExtractVariables>

I fill in in the url.. :

.../GetOrderListPerCustomerOperation?CustomerID=0000002200

- is this the correct syntax?

- The display name is "GetOrderListPerCustomerOperation Extract Query Param"

and the extract var.. "GetOrderListPerCustomerOperation-extract-query-param"

510-screenshot-149.jpg

I cant imagine that the WSDL (soap) conversion to REST would need "changes" in order to work..

So fare entering the user / password, with right operation, was fine.

If anyone wants the wsdl file, user and password to test it - I'd much appreciate it.

It is possible that SAP ESR (Enterprise Service repository) XML standards sometimes can deviate.

If anyone has an idea which "entry" is wrong, please let me know.

Thank you,

Doron.

I'd want to look at the Trace download for the API proxy while a request is made, can you share that along with WSDL file

Not applicable

Dear All,

Thank you for the input. The issue has been identified.

The export WSDL of the web service (straight from the SAP PO sender agreement), is being converted with the Apigee wizard (soap top api, "file") with out errors, and most of it works.

However the generated "soap request" is not formated entirely in the way the Soap adapter expects. If I set a default "response" .. it does come back correctly. But the key fields in the request are not going through, although they are formated in the request.

Apigee will fix.

The work around is to construct a correct response, and "paste" it in the "build SOAP" policy.

Thank you.

Doron