2017-02-05 4 views
0

Попытки опубликовать некоторые XML. Создали IBAction„SelectButtonA“, который использует Alamofire.request размещать на адрес. Soap Кодирование перекачиваемого по структуре.Alamofire .post в Swift. «Результат вызова не используется, но производит„DataRequest“

Безразлично Как я могу проверить, что это сообщение, и разрешить ошибку «Результат вызова не используется, но создает« DataRequest »?

// Основная структура, которая определяет кодировку SOAP и XML для Alamofire. //

struct SOAPEncoding: ParameterEncoding { 
    let service: String 
    let action: String 
    let IRCCC: String = "AAAAAQAAAAEAAABlAw==" 

    func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { 
     var urlRequest = try urlRequest.asURLRequest() 

     guard parameters != nil else { return urlRequest } 

     if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { 
      urlRequest.setValue("text/xml", forHTTPHeaderField: "Content-Type") 
     } 

     if urlRequest.value(forHTTPHeaderField: "SOAPACTION") == nil { 
      urlRequest.setValue("\(service)#\(action)", forHTTPHeaderField: "SOAPACTION") 
     } 

     //let soapArguments = parameters.map({key, value in "<\(key)>\(value)</\(key)>"}).joined(separator: "") 

     let soapMessage = 
      "<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/' s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>" + 
       "<s:Body>" + 
       "<u:\(action) xmlns:u='\(service)'>" + 
       IRCCC + 
       "</u:\(action)>" + 
       "</s:Body>" + 
     "</s:Envelope>" 

     urlRequest.httpBody = soapMessage.data(using: String.Encoding.utf8) 

     return urlRequest 
    } 
} 

@IBAction func SelectButtonA(sender: NSButton) { 
    Alamofire.request("http://192.168.2.7/sony/IRCC?", method: .post, parameters: ["parameter" : "value"], encoding: SOAPEncoding(service: "urn:schemas-sony-com:service:IRCC:1", action: "X_SendIRCC")) 
} 

Screenshot of the whole thing. Trying to make a remote.

ответ

0

Все это объясняется в Alamofire README на GitHub.

Метод Alamofire.request() возвращает объект Request и запускает его работу. Затем вы можете использовать функцию .response(). Чтобы получить результаты этого запроса.

Alamofire.request(...).response { 
    response in 

    // get details of the result out of the response input to this closure. 
} 

Часть первая ... как вы ее знаете? Получите доступ к данным при завершении.

Часть вторая ... как вы избавитесь от ошибки? Добавьте завершение.

+0

Я проверил реакцию. Это производит некорректный запрос. Я установил его. – yeeeeee

0

«Результат вызова не используется, но производит„DataRequest“это просто предупреждение, потому что Alamofire.request (...) возвращать ценный, но вы не использовали его, не ошибка сообщение.

0

Произведено неверный запрос.

код, который работает, чтобы отправить запрос SOAP, без заголовков и т.д .:

Alamofire.request("http://192.168.2.7/sony/IRCC?", 
         method: .post, 
         parameters: ["parameter" : "value"], 
         encoding: SOAPEncoding(service: "urn:schemas-sony-com:service:IRCC:1", 
              action: "X_SendIRCC", IRCCC: "AAAAAQAAAAEAAABgAw==")).responseString { response in 
               print(response) 
Смежные вопросы