У меня есть Угловая веб-сборка в приложении iOS и вы хотите, чтобы POST
запрашивал до собственного слоя с некоторым JSON
, который я могу использовать для создания некоторой собственной функциональности. Я использую старый UIWebView
(потому что угловой), поэтому я использую NSURLProtocol
для перехвата запроса. Это работает, и я могу сломаться в точке, в которой приходит запрос. Проблема в том, что я не могу увидеть JSON
в свойстве данных в этот момент, потому что это не ответ. Запрос все еще находится в объекте конфигурации, но я понятия не имею, как это сделать.Как я могу получить данные из объекта конфигурации NSURLRequest
Мой угловой код для создания должности в настоящее время, как это:
var newdata = $.param({
json: JSON.stringify({
name: "Lee"
})
});
$http.post(url, newdata)
и в моем NSURLProtocol
классе я успешно перехватывать этот пост в этом методе, но свойство HTTPBody равна нулю:
override class func canInitWithRequest(request:NSURLRequest) -> Bool {
if (request.URL!.absoluteString as NSString).containsString("request_media_gallery") {
if(request.HTTPBody != nil){
let data:NSData = request.HTTPBody!
print(data)
}
return true
}
return request.URL?.host == "file"
}
Если я отлаживаю это в chrome, я получаю 405 из-за CORS, но я вижу, что мой объект запроса не имеет никаких данных, но имеет объект конфигурации. Вот лог консоли от Chrome:
Итак, как мы читаем этот NSInputStream? Mine, кажется, говорит «нет байтов» – Jelle
Раздражающе, байты фактически не становятся доступными до более позднего цикла цикла выполнения. Для чтения: 1. Установите себя как делегат потока. 2. Запланируйте его в цикле выполнения. 3. Откройте поток. 4. Внедрите доступные методы делегатов. 5. Сделайте свою работу после того, как она сообщит, что имеются доступные байты. – dgatwood