BookmarkSubscribeRSS Feed
Keith22
Calcite | Level 5

I am trying to make a PROC SOAP call from SAS using a saved file instead of a URL. The reason for this is firewall/proxy issues calling some of the "w3" websites. The xml from the WSDL is saved to a text file with a ."wsdl" extension and the problematic URLs are replaced with ".xsd" files stored in the same directory.

This solution does work when testing in SOAP UI 5.2 , but the challenge I am having is getting SAS to reference the local file saved to SAMGW instead of using the URL. Has anyone had any experience with this? Below is the code I am trying to use. The statement in bold is the problematic part. The SOAP Envelope is contained in the REQUEST.xml file referenced in the first line of code.

 

filename REQUEST "samplefilepath/REQUEST.xml" ; 
filename RESPONSE "samplefilepath/RESPONSE.xml" ;

proc soap in=REQUEST
out=RESPONSE
URL="samplefilepath/ChangeRiskModel2.wsdl" /*this is the line I am trying to figure out. Instead of using a URL I need it to reference a static file
soapaction="http://urltowsdl"
WEBUSERNAME="xxxxxx"
WEBPASSWORD="xxxxxx";
run;

 

4 REPLIES 4
ballardw
Super User

I think you need to use a comment such as /* <=== This line is the problem line */

as the posted code doesn't show any bold text.

Keith22
Calcite | Level 5

thanks. I added a comment next to the line I am having difficulties with. 

ballardw
Super User

I am guessing here but if your URL would generally be http:// <etc> I might try Url= "file://<local path>"

Keith22
Calcite | Level 5

Thanks, that helped! I also found that I had reversed my URL and SOAPAction. It seems now that the PROC SOAP command is connecting but  I am seeing an issue with the SOAP Envelope now. The envelope works in SOAPUI 5.2 but the same envelope returns an error - 

 

<SOAP-ENV:Fault xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>SOAP-ENV:Server</faultcode><faultstring>A CXmlApiException was raised in native code : error 16 : scxmlapi(16) - Invalid or missing file name in XML request</faultstring><faultactor>Server</faultactor></SOAP-ENV:Fault>

 

Anyone know a way around this? Details of the envelope I am using below: 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://schemas.hp.com/SM/7" xmlns:com="http://schemas.hp.com/SM/7/Common" xmlns:c="file:///c:\dev\xmlmime">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:UpdateChangeRiskModelRequest attachmentInfo="" attachmentData="" ignoreEmptyElements="true" updateconstraint="-1">
         <ns:model query="">
            <ns:keys query="" updatecounter="">
               <!--Optional:-->
               <ns:ChangeID type="String" mandatory="" readonly="">C02766647</ns:ChangeID>
            </ns:keys>
            <ns:instance query="" uniquequery="" recordid="" updatecounter="">
               <ns:header type="Structure">
                  <!--Optional:-->
                  <ns:ChangeID type="String" mandatory="" readonly=""></ns:ChangeID>
                  <!--Optional:-->
                  <ns:CurrentPhase type="String" mandatory="" readonly=""></ns:CurrentPhase>
                  <!--Optional:-->
                  <ns:RiskAssessment type="String" mandatory="" readonly=""></ns:RiskAssessment>
                  <!--Optional:-->
                  <ns:TestingResults type="String" mandatory="" readonly=""></ns:TestingResults>
                  <!--Optional:-->
                  <ns:RecoveryScope type="String" mandatory="" readonly=""></ns:RecoveryScope>
                  <!--Optional:-->
                  <ns:CodeRepository type="String" mandatory="" readonly=""></ns:CodeRepository>
                  <!--Optional:-->
                  <ns:PerformingGroup type="String" mandatory="" readonly=""></ns:PerformingGroup>
               </ns:header>
               <ns:middle type="Structure">
                  <!--Optional:-->
                  <ns:AssociatedCIs type="Array">
                     <!--Zero or more repetitions:-->
                     <ns:AssociatedCIs type="String" mandatory="" readonly=""></ns:AssociatedCIs>
                  </ns:AssociatedCIs>
               </ns:middle>
               <!--Optional:-->
               <ns:Service type="String" mandatory="" readonly=""></ns:Service>
               <!--Optional:-->
               <ns:ScoredRiskFlag type="String" mandatory="" readonly="">Scored</ns:ScoredRiskFlag>
               <!--Optional:-->
               <ns:ScoredRisk type="String" mandatory="" readonly="">Low</ns:ScoredRisk>
               <!--Optional:-->
               <ns:attachments>
                  <!--Zero or more repetitions:-->
                  <com:attachment c:contentType="" href="" contentId="" action="" name="" type="" len="" charset="" attachmentType="">cid:1331595433226</com:attachment>
               </ns:attachments>
            </ns:instance>
            <!--Optional:-->
            <ns:messages>
               <!--Zero or more repetitions:-->
               <com:message severity="" module=""></com:message>
            </ns:messages>
         </ns:model>
      </ns:UpdateChangeRiskModelRequest>
   </soapenv:Body>
</soapenv:Envelope>

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 2393 views
  • 0 likes
  • 2 in conversation