jstring base64到字符串转换

时间:2017-08-30 05:59:09

标签: java android c++ cocos2d-x

我正在研究cocos2dx项目,在JNI调用中,方法返回一个包含base64编码字符串的java字符串,但是我很快就尝试从jstring到C ++端的const char,它会给出错误,你能帮我吗?在这里?

  string getBase64EncodingJNI(std::string pData) {
  JniMethodInfo methodInfo;
            if (JniHelper::getStaticMethodInfo(methodInfo, "com/abc/something/modules/myHelper", "getBase64Encoding", "(Ljava/lang/String;)Ljava/lang/String;")) {

            jstring jData;
            if (!pData.c_str())
                jData = methodInfo.env->NewStringUTF("");
            else
                jData = methodInfo.env->NewStringUTF(pData.c_str());

            jstring output =  (jstring) methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID,jData);
            const char *strReturn = methodInfo.env->GetStringUTFChars(output, 0);
            string outputData = strReturn;

            methodInfo.env->DeleteLocalRef(methodInfo.classID);
            methodInfo.env->DeleteLocalRef(jData);
            methodInfo.env->ReleaseStringUTFChars(output, strReturn);
            return outputData;
    }
return "";

}

这是被称为

的方法
public static String getBase64Encoding(String pdata) {
    String encodedStr = Base64.encodeToString (pdata.getBytes(), Base64.DEFAULT);
    return encodedStr;
}

我在行GetStringUTFChars上收到错误我想准备好编码的jstring并将其传递给其他函数。错误是 JNI在应用程序中检测到错误:使用挂起异常java.lang.IllegalArgumentException调用JNI GetStringUTFChars:bad base-64

0 个答案:

没有答案