如何使用代理功能为Android Arch构建libcurl

时间:2019-05-21 21:30:11

标签: android proxy libcurl

我需要在我的一个Android项目中使用libcurl cpp库,并且能够使用SSL支持来构建该库,但是代理功能无法正常工作。 首先,我正在通过向代理发送HEAD请求并根据我在curl选项中添加代理URL的方式来在系统中启用/禁用代理。

我的android应用程序使用我构建的cpp库,而cpp库使用的是libcurl。

是构建库的问题还是库的实现问题?我在构建或代码中缺少什么吗?

我已经为iOS构建了库,它似乎可以很好地与代理功能配合使用。

我已经通过以下链接构建了libcurl库:“ https://github.com/gcesarmza/curl-android-ios

当我在android中运行该应用程序时,isProxyEnabled()函数返回false,而HEAD请求返回responseCode-0,curl_easy_perform(handle)返回7。但是sendHTTP中的请求成功执行,并返回响应204。

#define PROXY_ADDR "127.0.0.1:5466"

void sendHTTP() {
    .....
    if(isProxyEnabled()) {
        curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://" PROXY_ADDR);
    }
    .....
}


bool isProxyEnabled() {
        bool isEnabled = false;
        CURL * handle = curl_easy_init();

        curl_easy_setopt(handle,CURLOPT_URL, "http://" PROXY_ADDR);
        curl_easy_setopt(handle, CURLOPT_NOBODY, 1L);

        CURLcode ret = curl_easy_perform(handle);

        if(ret == CURLE_OK) {
            isEnabled = true;
        }
        curl_easy_cleanup(handle);
        return isEnabled;
    }

0 个答案:

没有答案