Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios swift contsruct使用xml请求体生成请求_Ios_Xml_Swift - Fatal编程技术网

Ios swift contsruct使用xml请求体生成请求

Ios swift contsruct使用xml请求体生成请求,ios,xml,swift,Ios,Xml,Swift,嗨,我要在swift中创建一个自定义请求 我的请求机构有问题 这是我的xml正文: <ItemTrackingDetailsRequest xmlns="http://singpost.com/paw/ns"> <ItemTrackingNumbers> <TrackingNumber>SMT0000000628</TrackingNumber> </ItemTrackingNumbers> </ItemTrackingDetai

嗨,我要在swift中创建一个自定义请求

我的请求机构有问题

这是我的xml正文:

<ItemTrackingDetailsRequest xmlns="http://singpost.com/paw/ns">
<ItemTrackingNumbers>
<TrackingNumber>SMT0000000628</TrackingNumber>
</ItemTrackingNumbers>
</ItemTrackingDetailsRequest>
如何将其转换为字符串,然后再转换为请求的数据

我试过了

let params = "<ItemTrackingDetailsRequest>
        <ItemTrackingNumbers>
        <TrackingNumber>\(trackingNumber.uppercaseString)</TrackingNumber>
        </ItemTrackingNumbers>
        </ItemTrackingDetailsRequest>"

        let xmlRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
        xmlRequest.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
        xmlRequest.HTTPMethod = "POST"
        xmlRequest.addValue("application/xml", forHTTPHeaderField: "Content-Type")

但是参数中有错误,因为我错误地构造了主体字符串。有没有办法从上面的xml构造字符串?任何帮助都将不胜感激。谢谢

Swift还不支持多行字符串文字,我也没有看到任何关于这方面的建议。如果您经常提出该请求,最好将请求包装在一个为您构建XML的结构中:

struct ItemTrackingRequest {
    var trackingNumbers: [String]

    init(trackingNumbers: String...) {
        self.trackingNumbers = trackingNumbers
    }

    func xmlString() -> String {
        var xml = "<?xml version=\"1.0\"?>"
        xml += "<ItemTrackingDetailsRequest xmlns=\"http://singpost.com/paw/ns\">"
        xml += "<ItemTrackingNumbers>"

        for number in self.trackingNumbers {
            xml += "<TrackingNumber>\(number)</TrackingNumber>"
        }

        xml += "</ItemTrackingNumbers>"
        xml += "</ItemTrackingDetailsRequest>"

        return xml
    }
}

let params = ItemTrackingRequest(trackingNumbers: "SMT0000000628").xmlString()

如果您的请求变得复杂得多,请使用核心数据对请求进行建模并生成XML。

Swift还不支持多行字符串文字,我也没有看到任何关于这方面的建议。如果您经常提出该请求,最好将请求包装在一个为您构建XML的结构中:

struct ItemTrackingRequest {
    var trackingNumbers: [String]

    init(trackingNumbers: String...) {
        self.trackingNumbers = trackingNumbers
    }

    func xmlString() -> String {
        var xml = "<?xml version=\"1.0\"?>"
        xml += "<ItemTrackingDetailsRequest xmlns=\"http://singpost.com/paw/ns\">"
        xml += "<ItemTrackingNumbers>"

        for number in self.trackingNumbers {
            xml += "<TrackingNumber>\(number)</TrackingNumber>"
        }

        xml += "</ItemTrackingNumbers>"
        xml += "</ItemTrackingDetailsRequest>"

        return xml
    }
}

let params = ItemTrackingRequest(trackingNumbers: "SMT0000000628").xmlString()

如果您的请求变得复杂得多,请使用核心数据对请求进行建模并生成XML。

谢谢,请注意我的字符串结构中有一些空格,这是打字错误。正确的答案应该是let params=trackingNumber.uppercaseString可以帮助我看看这个问题。仍然在挣扎,谢谢你,我发现我的字符串结构中有一些空格,这是打字错误。正确的答案应该是let params=trackingNumber.uppercaseString可以帮助我看看这个问题。还在挣扎