国外财经网站是怎么做的,某企业网站建设规划书,有关网站空间正确的说法是,北京工信部网站本文可能需要使用的环境和工具#xff1a;
c/ c和GCC编译器
(Windows) Cygwin或MinGW
本文运行环境为windows10#xff0c;使用MinGW-W64-builds-4.2.0
curl-8.5.0
libcurl 可以在官网 http://curl.haxx.se/ 获得。
配置MinGW
将mingw.rar解压到D:#xff0c;修改系统…本文可能需要使用的环境和工具
c/ c和GCC编译器
(Windows) Cygwin或MinGW
本文运行环境为windows10使用MinGW-W64-builds-4.2.0
curl-8.5.0
libcurl 可以在官网 http://curl.haxx.se/ 获得。
配置MinGW
将mingw.rar解压到D:修改系统环境变量path将D:\mingw\bin加入
打开cmd输入gcc -v验证
编译curl
将curl-8.5.0.zip解压到D:打开cmdcd进入到D:\curl-8.5.0
执行下面命令
mingw32-make mingw32
编写java类生成头文件
编写一个如下的类
package com.kindo.nhzk;public class SendDocument {static {System.loadLibrary(kindolib);}public native void send(String data);public static void main(String[] args) {new SendDocument().send({\data\:[{\sex\:1,\age\:56,\bornWt\:0,\LOS\:6,\statusOut\:2,\PDX\:\I21.000x005\,\ADX1\:\A02.100\,\ADX2\:null,\ADX3\:\\,\ADX4\:\\,\ADX5\:\\,\ADX6\:\\,\ADX7\:\\,\ADX8\:\\,\ADX9\:\\,\ADX10\:\\,\ADX11\:\\,\ADX12\:\\,\ADX13\:\\,\ADX14\:\\,\ADX15\:\\,\PROC1\:\\,\PROC2\:\\,\PROC3\:\\,\PROC4\:\\,\PROC5\:\\,\PROC6\:\\,\PROC7\:\\,\PROC8\:\\}]});}
}
使用javac或idea进行编译编译后进入到class目录下执行下面命令
javah -jni com.kindo.nhzk.SendDocument
此时会生成一个com_kindo_nhzk_SendDocument.h内容如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include jni.h
/* Header for class com_kindo_nhzk_SendDocument */#ifndef _Included_com_kindo_nhzk_SendDocument
#define _Included_com_kindo_nhzk_SendDocument
#ifdef __cplusplus
extern C {
#endif
/** Class: com_kindo_nhzk_SendDocument* Method: send* Signature: (Ljava/lang/String;)V*/
JNIEXPORT void JNICALL Java_com_kindo_nhzk_SendDocument_send(JNIEnv *, jobject, jstring);#ifdef __cplusplus
}
#endif
#endif
编写c语言实现
在该目录下创建一个kindolib.c文件如下
#include com_kindo_nhzk_SendDocument.h
#include stdio.h
#include curl/curl.hJNIEXPORT void JNICALL Java_com_kindo_nhzk_SendDocument_send(JNIEnv *env, jobject obj, jstring str) {CURL *curl;CURLcode res;curl_global_init(CURL_GLOBAL_ALL);curl curl_easy_init();//HTTP报文头 struct curl_slist* headers NULL;if(curl) {const char *inCStr (*env)-GetStringUTFChars(env, str, NULL);printf(In C, the received string is: %s\n, inCStr);headers curl_slist_append(headers, Content-Type:application/json;charsetUTF-8);// 设置请求地址curl_easy_setopt(curl, CURLOPT_URL, http://192.168.1.134:8880/cdrg-1.0/cdrg);// 设置请求头信息curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 设置请求超时时间curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 3000);// 设置请求体curl_easy_setopt(curl, CURLOPT_POSTFIELDS, inCStr);curl_easy_setopt(curl, CURLOPT_POST, 1);res curl_easy_perform(curl);if(res ! CURLE_OK)fprintf(stderr, curl_easy_perform() failed: %s\n,curl_easy_strerror(res));printf(ok);curl_slist_free_all(headers);curl_easy_cleanup(curl);(*env)-ReleaseStringUTFChars(env,str,inCStr);}curl_global_cleanup();}
编译c程序为dll
执行下面的命令
gcc -c -I%JAVA_HOME%/include -I%JAVA_HOME%/include/win32 -ID:\curl-8.5.0\include -LD:\curl-8.5.0\lib -DCURL_STATICLIB -lcurl kindolib.cgcc -I$JAVA_HOME/include -I%JAVA_HOME%/include -I%JAVA_HOME%/include/win32 -ID:\curl-8.5.0\include -LD:\curl-8.5.0\lib -shared -o kindolib.dll kindolib.o -lcurl
上面使用了JAVA_HOME环境变量D:\curl-8.5.0为curl库目录
使用java验证和运行
将编译好的kindolib.dll 和 libcurl.dll放到JAVA_HOME\bin也就是java.library.path下执行上面的SendDocument类 libcurl.dll是运行的依赖最终需要kindolib.dll 和 libcurl.dll在同一个目录下此文件在D:\curl-8.5.0\lib下。