使用c通過HTTP介面使用百度翻譯API

2021-07-31 06:37:31 字數 2666 閱讀 9980

/usr/bin/ld: /tmp/ccbieejs.o: undefined reference to symbol 'md5@@libcrypto.so.10'

/usr/bin/ld: note: 'md5@@libcrypto.so.10' is defined in dso /lib64/libcrypto.so.10 so try adding it to the linker command line

/lib64/libcrypto.so.10: could not read symbols: 無效的操作

collect2: 錯誤:ld 返回 1

意思是openssl中的md5函式使用錯誤,可以在編譯選項後新增/lib64/libcrypto.so 來解決。

下面開始程式的編寫:

1.首先建立乙個結構體,用於儲存curl請求的結果,這裡設計結構體的原因是curl_easy_setopt的

curlopt_writedata選項要求第三個引數是結構體,而不能是字串。

struct

memorystruct ;

2.用於接收資料的函式,向上面的結構體中寫入資料

static

size_t 

writememorycallback(

void

*contents, size_t size, size_t nmemb,

void

*userp)

//將資料拷貝到原來的結構

memcpy(&(mem->memory[mem->size]), contents, realsize);

mem->size += realsize;

mem->memory[mem->size] =0;

return

realsize; }

3.將請求資料進行拼接、進行md5簽名的生成,然後利用curl進行資料的請求,即可得到資料,使用的編譯命令gcc -wall -lcurl -lssl transdemo.cpp -o transdemo /lib64/libcrypto.so

#include

#include

#include

#include

#include

struct

memorystruct ;

static

size_t

writememorycallback(

void

*contents, size_t size, size_t nmemb,

void

*userp)

memcpy(&(mem->memory[mem->size]), contents, realsize);

mem->size += realsize;

mem->memory[mem->size] =0;

return

realsize;

}int

main(

void

),buf[

33]=;

//利用

md5生成簽名

md5((

const

unsigned

char

*)sign,strlen((

const

char

*)sign),md);

for(i =

0; i <

16; i++)

//進行請求引數的拼接

strcat(myurl,

);strcat(myurl,

"&q="

);strcat(myurl,q);

strcat(myurl,

"&from="

);strcat(myurl,from);

strcat(myurl,

"&to="

);strcat(myurl,to);

strcat(myurl,

"&salt="

);strcat(myurl,salt);

strcat(myurl,

"&sign="

);strcat(myurl,buf);

//設定請求的位址引數

curl_easy_setopt(curl, curlopt_url, myurl);

//接收資料函式

curl_easy_setopt(curl, curlopt_writefunction, writememorycallback);

//接收資料的儲存位址

curl_easy_setopt(curl, curlopt_writedata, (

void

*)&chunk);

//進行請求

res = curl_easy_perform(curl);

//請求得到的資料列印

printf(

"%s\n"

,chunk.memory);

//請求出錯

if(res != curle_ok)

fprintf(stderr,

"curl_easy_perform() failed: %s\n"

,curl_easy_strerror(res));

//進行

curl

的清理curl_easy_cleanup(curl);

}return0;

}

百度翻譯 介面使用例項

獲取目標url所列印的內容 static function language text url else return file contents 定義需要翻譯的內容 title 你好 驗證是否為漢字 相容gb2312,utf 8 if preg match x7f xff title else 結...

C 使用百度翻譯API

要翻譯的文字 from語言 翻譯為語言 static private string callinte ce string sub,string from,string to else string url string.format client id,sub,from,to string down...

百度翻譯介面

public class translateacy extends activity implements onclicklistener public void initview private handler inshandler new handler 翻譯 private void tran...