zoukankan      html  css  js  c++  java
  • linux curl http get 请求中带有中文参数或者特殊字符处理

    在使用c++去请求http服务的时候,使用的是著名的curl工具提供的类库 libcurl,但是在使用的过程中发现,如果请求的参数值带了空格或者是参数是中文,会导致响应的回调函数没有被执行,虽然curl_easy_perform 返回的CURLcode 为 CURLE_OK,但是实际上是没有数据的。

    考虑到可能需要转义,于是研究了下官方文档,具体参考如下链接: http://curl.haxx.se/libcurl/c/curl_escape.html
    使用 curl_easy_escape 方法可解决上述的问题,注意使用的时候需要释放返回的字符串,举例如下:

       string input ="get请求参数"; // input为 get请求参数
       char * escape_control = curl_escape(input.c_str(), input.size()); input = escape_control; curl_free(escape_control); string str_url= "http://*.*.*.*:8082/getReply?input=" + input; ... ... curl_easy_setopt(pCurl, CURLOPT_URL, str_url.c_str());

    例子中使用curl_escape() 函数对所要发送的请求参数进行处理,然后再发送.
    注意: 

      curl_escape() 函数 不能对整个url 请求地址进行处理,只能对后面的请求参数进行处理,否则会造成地址错误,找不到服务器。
      如例子中的 str_url,不能对其整个请求进行处理。

      get 请求只能通过将请求参数放到url中的方式一起使用。CURLOPT_URL

    参考:http://finallygo.iteye.com/blog/2105901

  • 相关阅读:
    JAVA中的类和对象
    JAVA方法
    JAVA数组
    JAVA流程控制语句
    JAVA常用的运算符
    JAVA中的变量和常量
    JAVA安装及环境变量配置
    linux环境下配置jmeter环境变量
    linux环境下解压文件
    安装程序遇到错误0x80240037
  • 原文地址:https://www.cnblogs.com/yongpan/p/8066825.html
Copyright © 2011-2022 走看看