Ios swift contsruct使用xml请求体生成请求
嗨,我要在swift中创建一个自定义请求 我的请求机构有问题 这是我的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
<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可以帮助我看看这个问题。还在挣扎