IOS Swift Call Web Service using SOAP -


i have looked through answers how call web service via soap form swift on internet , found answers. have tried implement code have found in answers continually http 400 status code. trying figure our doing wrong.

i have distilled problem down few lines of code in view controller seen below code called when button on ui pressed. web service trying call can found @ http://www.cgsapi.com/cgswebservice.asmx.

(to view wsdl file append ?wsdl end of url.)

import uikit  class viewcontroller: uiviewcontroller { var is_soapmessage: string = "<soapenv:envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cgs=\"http://www.cgsapi.com/\"><soapenv:header/><soapenv:body><cgs:getsystemstatus/></soapenv:body></soapenv:envelope>"  override func viewdidload() {     super.viewdidload()     // additional setup after loading view, typically nib. }  override func didreceivememorywarning() {     super.didreceivememorywarning()     // dispose of resources can recreated. }  @ibaction func btnclicked(sender: anyobject) {     var is_url: string = "http://www.cgsapi.com/cgswebservice.asmx"      var lobj_request = nsmutableurlrequest(url: nsurl(string: is_url)!)     var session = nsurlsession.sharedsession()     var err: nserror?      lobj_request.httpmethod = "post"     lobj_request.addvalue("www.cgsapi.com", forhttpheaderfield: "host")     lobj_request.addvalue("text/xml; charset=utf-8", forhttpheaderfield: "content-type")     //lobj_request.addvalue(string(count(is_soapmessage)), forhttpheaderfield: "content-length")     lobj_request.addvalue("223", forhttpheaderfield: "content-length")     lobj_request.addvalue("http://www.cgsapi.com/getsystemstatus", forhttpheaderfield: "soapaction")      var task = session.datataskwithrequest(lobj_request, completionhandler: {data, response, error -> void in         println("response: \(response)")         var strdata = nsstring(data: data, encoding: nsutf8stringencoding)         println("body: \(strdata)")          if error != nil         {             println("error: " + error.description)         }      })     task.resume() }  } 

any idea why getting http 400 status when call this?

so being silly. main missed setting body of message soap request. updated corrected code below:

// //  viewcontroller.swift //  testwebservicesoap // //  created george m. ceaser jr on 6/2/15. //  copyright (c) 2015 george m. ceaser jr. rights reserved. //  import uikit  class viewcontroller: uiviewcontroller { var is_soapmessage: string = "<soapenv:envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cgs=\"http://www.cgsapi.com/\"><soapenv:header/><soapenv:body><cgs:getsystemstatus/></soapenv:body></soapenv:envelope>"  override func viewdidload() {     super.viewdidload()     // additional setup after loading view, typically nib. }  override func didreceivememorywarning() {     super.didreceivememorywarning()     // dispose of resources can recreated. }  @ibaction func btnclicked(sender: anyobject) {     var is_url: string = "http://www.cgsapi.com/cgswebservice.asmx"      var lobj_request = nsmutableurlrequest(url: nsurl(string: is_url)!)     var session = nsurlsession.sharedsession()     var err: nserror?      lobj_request.httpmethod = "post"     lobj_request.httpbody = is_soapmessage.datausingencoding(nsutf8stringencoding)     lobj_request.addvalue("www.cgsapi.com", forhttpheaderfield: "host")     lobj_request.addvalue("text/xml; charset=utf-8", forhttpheaderfield: "content-type")     lobj_request.addvalue(string(count(is_soapmessage)), forhttpheaderfield: "content-length")     //lobj_request.addvalue("223", forhttpheaderfield: "content-length")     lobj_request.addvalue("http://www.cgsapi.com/getsystemstatus", forhttpheaderfield: "soapaction")      var task = session.datataskwithrequest(lobj_request, completionhandler: {data, response, error -> void in         println("response: \(response)")         var strdata = nsstring(data: data, encoding: nsutf8stringencoding)         println("body: \(strdata)")          if error != nil         {             println("error: " + error.description)         }      })     task.resume() }  } 

Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -