Я работаю над заменой некоторого нативного кода на реагирующий нативный. Ожидаемый запрос POST (реализованный в AFNetworking
) в Charles
должен быть таким:
Фрагмент кода:
NSError *err;
NSData *paramData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&err];
NSData *paramData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&err];
NSString *paramString = [[NSString alloc] initWithData:paramData encoding:NSUTF8StringEncoding];
NSDictionary *param = @{@"data":paramString};
AFHTTPRequestOperation *operation = [manager POST:URLString parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (successBlock) {
successBlock(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
DebugLog(@"%zd", operation.response.statusCode);
if (failureBlock) {
failureBlock(operation, error);
}
}];
А вот запрос от Fetch API
версии такой:
Фрагмент кода:
export default async (url, param) => {
var result = await fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'text/html',
},
body: JSON.stringify({
'data': JSON.stringify(param)
})
})
.then(response => checkStatus(response))
.then(response => response.json())
.catch(e => { throw e; });
return result;
}
Мой вопрос, как я могу отправить сообщение в fetch
точно так же, как в AFNetworking
? Это стоило мне много времени. Спасибо!!
обновлено: основное отличие заключается в надоедливых косых чертах и их структуре данных тела, нативная — json (data
: paramString
), а js — строка.
Accept: text/html
? Потому что это просит сервер отправить вам HTML-ответ, верно? Не JSON… - person sideshowbarker   schedule 17.07.2017param
вbody
- person Engineer   schedule 17.07.2017text/html
хорошо работает в нативной реализации. - person Benjamin Wen   schedule 17.07.2017