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을 구성하는 방법은 무엇입니까? 어떤 도움이라도 대단히 감사합니다. 고마워요

답변

3

스위프트는 멀티 라인 문자열 리터럴을 아직 지원하지 않으며 파이프 라인에서도 제안을 보지 못했습니다.

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을 빌드 구조 요청을 포장하는 것이 좋습니다 거기에 대한 XML을 요청하고 생성하십시오.

+0

감사합니다. 오타 오류 인 문자열 구성에 일부 공간이 있습니다. 올바른 항목은 다음과 같습니다. params = " \ (trackingNumber.uppercaseString)/ItemTrackingDetailsRequest> " –

+0

이 질문을 살펴볼 수 있습니다. 여전히 struglling http://stackoverflow.com/questions/39318514/swift-alamofire-send-xml-request-and-receive-xml-response –

관련 문제