У меня есть простая конечная точка Node Express, которую я могу успешно использовать с помощью curl:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"lat":33.485834000000001,"long":-100.106417}' \
http://192.168.99.100:49160/login
{"status":200,"data":{"userId":"bff37d9c-25a9-421b-aa58-eba0fef0da03"},"message":null}
Однако, когда я пытаюсь достичь той же конечной точки, но используя Swift 4, со следующим:
let task = URLSession.shared.dataTask(with: urlRequest) { data, response, error in
guard let serverData = data, error == nil else {
handler(ResponseBuilder().set(error: ErrorType.network).build())
return
}
// Process data.
}
task.resume()
В «данных», которые мне возвращает URLSession, ничего нет.Я ожидаю, что данные содержат то же значение, что и curl, возвращенный выше.
'Ответ' заполняется так, как я ожидал:
Optional<NSURLResponse>
- some : <NSHTTPURLResponse: 0x600000a1a5a0> { URL: http://192.168.99.100:49160/login } { Status Code: 200, Headers {
Connection = (
"keep-alive"
);
"Content-Length" = (
86
);
"Content-Type" = (
"application/json; charset=utf-8"
);
Date = (
"Thu, 25 Oct 2018 05:51:39 GMT"
);
Etag = (
"W/\"56-8ZCdAcNDopMfakzfNDEniZ0fgoc\""
);
"X-Powered-By" = (
Express
);
} }
'error' - это ноль, и я вижувойдя на сервер, чтобы указать, что его ударили, но данные все еще пусты.
Я запускаю свое приложение для iOS с использованием симулятора.
Я что-то упускаю здесь очевидное?
ОБНОВЛЕНИЕ 1
Чтобы ответить на некоторые из вопросов ниже.«urlRequest» создается следующим образом:
var urlRequest = URLRequest(url: request.url)
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.addValue("application/json", forHTTPHeaderField: "Accept")
urlRequest.httpMethod = "POST"
urlRequest.httpBody = try? JSONSerialization.data(withJSONObject: request.data, options: .prettyPrinted)
, где «запрос» - это просто объект-оболочка, который я использую, и его содержимое:
Request
▿ url : http://192.168.99.100:49160/login
- _url : http://192.168.99.100:49160/login
▿ data : 2 elements
▿ 0 : 2 elements
- key : "lat"
- value : 33.485834000000001
▿ 1 : 2 elements
- key : "long"
- value : -100.106417
ОБНОВЛЕНИЕ 3
Как кто-то предложил, я установил Charles Proxy.Вот результаты:
Запрос:
{
"lat" : 33.485834000000001,
"long" : -100.106417
}
Ответ:
{"status":200,"data":{"userId":"3d559555-c0ad-4e3a-a10b-3e267ee7f662"},"message":null}