【问题标题】:cURL response to NSString?cURL 对 NSString 的响应?
【发布时间】:2023-03-17 05:37:01
【问题描述】:
- (IBAction)newSearchToolBarButtonAction:(id)sender
{
    NSLog(@"New Search");
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/");
        res = curl_easy_perform(curl);

        /* always cleanup */
        curl_easy_cleanup(curl);
    }

}

这是我当前的代码。它通过在控制台中显示结果来工作,但我想把它放到一个 NSString 中。我该怎么做?

【问题讨论】:

    标签: macos cocoa curl nsstring libcurl


    【解决方案1】:

    经过一番折腾并查看其他示例代码后,我找到了一个可行的解决方案。我不确定这是不是最好的方法……但它确实有效。

    - (IBAction)newSearchToolBarButtonAction:(id)sender
    {
        NSLog(@"New Search");
        CURL *curl;
        CURLcode res;
        char *msg_in = calloc(1,sizeof(char));
    
        curl = curl_easy_init();
        if(curl) {
            curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &msg_in);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, http_get_response);
    
            res = curl_easy_perform(curl);
    
            NSLog(@"cURL-Res=%u",res);
    
            //NSLog(@"Buffer=%s",msg_in);
    
            NSString *string = [NSString stringWithCString:msg_in encoding:NSUTF8StringEncoding];
            NSLog(@"String=%@",string);
    
            /* always cleanup */
            curl_easy_cleanup(curl);
        }
    
    }
    
    int http_get_response(void *buffer, size_t size, size_t rxed, char **msg_in)
    {
        char *c;
    
        if (asprintf(&c, "%s%.*s", *msg_in, size * rxed, buffer) == -1) {
            free(*msg_in);
            msg_in = NULL;
            return -1;
        }
    
        free(*msg_in);
        *msg_in = c;
    
        return size * rxed;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2016-04-19
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多