返回信息流老大给派了一个小活儿,用C实现的http post请求,用Java来调C的这个函数
现在的问题是,Java的String能传过去,C的char *(我用的char[],不过试过了char*也没法成功)却不能转换成jstring回传到java,而且Java和C都不报错。。。。
用了两种方法
1.直接调用NewStringUTF不管用
2.用构造函数的方法来实现,贴上代码
jstring CharTojstring(JNIEnv* env, char* str)
{
jsize len = strlen(str);
jclass clsstring = (*env)->FindClass(env, "java/lang/String");
jstring strencode = (*env)->NewStringUTF(env,"GB2312");
jmethodID mid = (*env)->GetMethodID(env,clsstring, "<init>", "([BLjava/lang/String;)V");
jbyteArray barr = (*env)-> NewByteArray(env,len);
(*env)-> SetByteArrayRegion(env,barr,0,len,(jbyte*)str);
return (jstring)(*env)-> NewObject(env,clsstring,mid,barr,strencode);
}
也没法成功
试着用了一个简单的demo也无法传回到java中去。好悲催。。。
求助啊
这是一条镜像帖。来源:北邮人论坛 / java / #33916同步于 2014/8/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【JNI】Java的String能传到C里,C里的char*无法回传
wuxuguang
2014/8/21镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
没看完,这句貌似有点问题
return (jstring)(*env)-> NewObject(env,clsstring,mid,barr,strencode);
改为
return (jstring)((*env)-> NewObject(env,clsstring,mid,barr,strencode));
试试
进来学习