Вызов API для тела Multipart / form_data с данными application / json - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь загрузить некоторые данные на свой сервер. Я пытаюсь поместить свои данные в файл и загрузить их. Тело запроса - multipart / form_data с единственным параметром с именем "filemessage", содержащим текстовые данные, имеющие тип содержимого приложения / JSON

Я не уверен, как обращаться с приложением / json как типом контента для внутренних данных, содержащихся в "filemessage".

Я получаю 500 внутренняя ошибка сервера { "erMessage": "Неизвестная ошибка", "erCode": "UnknownErCode" }

Вот код.

func testMultipart()
{
let path = Bundle.main.path(forResource: "testregister", ofType: "txt")

            do {
                let mtext = try String(contentsOfFile: path!)
                let dataA = Data(mtext.utf8)
                guard let url = URL(string: "MY URL") else { return false }
                var request = URLRequest(url: url)
                request.httpMethod = "POST"
                let mKey = "filemessage"
                let mFileName = "testregister"
                let mMimeType = "text/plain"
                let boundary = generateBoundary()

                 request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

                let lineBreak = "\r\n"
                var body = Data()
                body.append("--\(boundary + lineBreak)")
                body.append("Content-Disposition: form-data; name=\"\(mKey)\"; filename=\"\(mFileName)\"\(lineBreak)")
                body.append("Content-Type: \(mMimeType + lineBreak + lineBreak)")
                body.append(dataA)
                body.append(lineBreak)


                request.httpBody = dataA

                let session = URLSession.shared
                session.dataTask(with: request) { (data, response, error) in
                    if let response = response {
                        print(response)
                    }
                    }.resume()

    }
     catch(_){print("error")}

    }


 func generateBoundary() -> String 
 {
   return "Boundary-\(NSUUID().uuidString)"
  }
...