如何使用GCDWebServerRequest

时间:2018-01-17 07:41:31

标签: ios xcode gcdwebserver

我有以下处理程序来响应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对象(屏幕截图)。

enter image description here

我希望获得一个字段_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,它会给我这个错误:

enter image description here

3 个答案:

答案 0 :(得分:0)

您的GCDWebServer代码是正确的,但您生成的POST请求不是。正文必须包含格式化为URL编码形式的数据,例如value=test

答案 1 :(得分:0)

对于NPM request,如果您希望使用x-www-form-urlencoded的内容类型,则必须调用参数form而不是body

示例:

request.post('http://service.com/upload', {form:{key:'value'}})

答案 2 :(得分:0)

您可以将GCDWebServerRequestoverride func write(_ data: Data)子类化以访问正文(例如,用于调试此类问题)。只需在requestClass中将MyCustomPostRequest.self设置为addHandlerForMethod