如何使用 GCDWebServer 请求读取 POST 请求的正文
How to read body of a POST request with GCDWebServerRequest
我有以下处理程序来响应 POST 请求:
[_webServer addHandlerForMethod:@"POST"
path:@"/"
requestClass:[GCDWebServerURLEncodedFormRequest class]
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
NSString* value = [[(GCDWebServerURLEncodedFormRequest*)request arguments] objectForKey:@"value"];
NSString* html = [NSString stringWithFormat:@"<html><body><p>%@</p></body></html>", value];
return [GCDWebServerDataResponse responseWithHTML:html];
}];
触发处理程序时,NSString* value
一直给我 null。我能够调试和查看 GCDWebServerRequest
对象(屏幕截图)。
有一个字段_data
我想获取
我可以知道怎么做吗?
这是我的POST参考请求:
var request = require('request');
request({
url: 'http://XX.XX.XX.XX:8080',
method: 'POST',
headers:{
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "12345678"
}, function(error, response, body){
console.log(body);
});
我正在使用 npm request
来 运行 POST 请求。如果我为我的 POST 请求做了 value=test
,它会给我这个错误:
您的 GCDWebServer 代码是正确的,但您生成的 POST 请求不正确。主体必须包含格式化为 URL 编码形式的数据,例如value=test
.
对于 NPM request
,如果您希望使用 x-www-form-urlencoded
的内容类型,则必须调用参数 form
而不是 body
。
示例:
request.post('http://service.com/upload', {form:{key:'value'}})
您可以子类化 GCDWebServerRequest
和 override func write(_ data: Data)
来访问正文(例如用于调试此类问题)。只需在 addHandlerForMethod
.
中将 requestClass
设置为 MyCustomPostRequest.self
我有以下处理程序来响应 POST 请求:
[_webServer addHandlerForMethod:@"POST"
path:@"/"
requestClass:[GCDWebServerURLEncodedFormRequest class]
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
NSString* value = [[(GCDWebServerURLEncodedFormRequest*)request arguments] objectForKey:@"value"];
NSString* html = [NSString stringWithFormat:@"<html><body><p>%@</p></body></html>", value];
return [GCDWebServerDataResponse responseWithHTML:html];
}];
触发处理程序时,NSString* value
一直给我 null。我能够调试和查看 GCDWebServerRequest
对象(屏幕截图)。
有一个字段_data
我想获取
我可以知道怎么做吗?
这是我的POST参考请求:
var request = require('request');
request({
url: 'http://XX.XX.XX.XX:8080',
method: 'POST',
headers:{
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "12345678"
}, function(error, response, body){
console.log(body);
});
我正在使用 npm request
来 运行 POST 请求。如果我为我的 POST 请求做了 value=test
,它会给我这个错误:
您的 GCDWebServer 代码是正确的,但您生成的 POST 请求不正确。主体必须包含格式化为 URL 编码形式的数据,例如value=test
.
对于 NPM request
,如果您希望使用 x-www-form-urlencoded
的内容类型,则必须调用参数 form
而不是 body
。
示例:
request.post('http://service.com/upload', {form:{key:'value'}})
您可以子类化 GCDWebServerRequest
和 override func write(_ data: Data)
来访问正文(例如用于调试此类问题)。只需在 addHandlerForMethod
.
requestClass
设置为 MyCustomPostRequest.self