首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用.NET asmx和xcode 8+

调用.NET asmx和xcode 8+
EN

Stack Overflow用户
提问于 2017-05-08 07:14:51
回答 1查看 841关注 0票数 0

我想使用下面的代码调用.net框架asmx服务(soap),用于iOS。

代码语言:javascript
复制
 @IBAction func buttonTest(_ sender: Any) {

    var soapMessage = "<?xml version='1.0' encoding='utf-8'?>";
    soapMessage = soapMessage + "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
    soapMessage = soapMessage + "<soap:Body>";
    soapMessage = soapMessage + "<LogginCustomerClub xmlns='http://tempuri.org/'>";
    soapMessage = soapMessage + "<userName>username</userName>";
    soapMessage = soapMessage + "<password>pass</password>";
    soapMessage = soapMessage + "<message>message</message>";
    soapMessage = soapMessage + "</LogginCustomerClub>";
    soapMessage = soapMessage + "</soap:Body>";
    soapMessage = soapMessage + "</soap:Envelope>";

    let urlString = "http://example.com/users.asmx"
    let url = NSURL(string: urlString)
    let theRequest = NSMutableURLRequest(url: url! as URL)

    let msgLength = String(soapMessage.characters.count)

    theRequest.addValue("text/xml; charset=utf-B", forHTTPHeaderField: "Content-Type")

    theRequest.addValue(String(msgLength), forHTTPHeaderField: "Content-Length")

    theRequest.httpMethod = "POST"

    theRequest.httpBody = soapMessage.data(using: .utf8)

    //theRequest.httpBody = soapMessage.dataUsIngEncoding (NSUTF8StringEncoding, allowLossyConversion: false) // or false

    let connection = NSURLConnection( request: theRequest as URLRequest, delegate: self, startImmediately: true)

    connection!.start()

    if (connection != nil)
    {
        var mutableData = NSMutableData.initialize()
    }
}
func connection(connection: NSURLConnection, didReceiveResponse response: URLResponse!)

{
    mutableData.length  = 0;
}

func connection(connection: NSURLConnection, didReceiveData data: NSData!)
{
     mutableData.append(data as Data)
}
func connectionDidFinishLoading(connection: NSURLConnection!)
{
    let response = NSString(data: mutableData as Data, encoding: String.Encoding.utf8.rawValue)

    let xmlParser = XMLParser(data: mutableData as Data)
    xmlParser.delegate = self
    xmlParser.parse()
    xmlParser.shouldResolveExternalEntities = true
}
    // NSXMLParserDelegate

func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

    currentElementName = elementName as NSString
}
func parser(parser: XMLParser,foundCharacters string: String?)
{
    if currentElementName == "LoginResult"{
       print(string)
    }
}

项目构建成功,但我无法得到响应。我不知道我在哪里做错了。

如能提供任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-08 16:18:09

使用gen4swift.com,我生成了asmx类,用于https://github.com/drmohundro/SWXMLHash/issues/127#issuecomment-299905419,并在这里解决了它的问题

完成了,现在正在工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43841822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档