2016-09-04 3 views
1

こんにちは私はすぐにカスタムリクエストを作成しようとしていますxmlリクエストボディでリクエストを処理する

私のリクエストボディに問題があります。 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") 

を試みるが、私は間違ってボディ文字列を構築するためのparamsのエラーを持っています。上のXMLからStringを構築する方法はありますか?どんな助けでも大変感謝しています。 THanks

答えて

3

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をリクエストして生成します。

+0

おかげで、私は誤植である私の文字列構造の中にいくつかのスペースを持っていることに感謝します。正しいものは、params = " \(trackingNumber.uppercaseString)/ItemTrackingDetailsRequest> " –

+0

私はこの質問を見るのを助けることができます。まだstruglling http://stackoverflow.com/questions/39318514/swift-alamofire-send-xml-request-and-receive-xml-response –

関連する問題