如何在Retrofit标头中使用本机字符串?

时间:2018-03-06 20:03:36

标签: android mobile android-ndk retrofit

我是NDK世界的新手。我有一个放在C / C ++层的密钥,我想在使用Retrofit进行GET时使用它。

这是我的代码

我有2个.mk文件,但它们与我的问题无关,我有一个keys.c文件,我存储了密钥:

#include <jni.h>
JNIEXPORT jstring JNICALL
Java_com_hello_world_PlacesListActivity_getNativeKey(JNIEnv *env, jobject instance) {
 return (*env)->  NewStringUTF(env, "my_key");
}

我能够在我的PlacesListActivity中使用此代码读取密钥:

  static {
    System.loadLibrary("keys");
}

public static native String getNativeKey();

现在我想在接口中使用GET请求的auth头中的本地String:

public interface TestService {
@Headers({
"client_id:" + PlacesListActivity.getNativeKey()
})
@GET("/some_end_point/")
}

我得到的问题是:

enter image description here

有关如何解决此问题的任何想法?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试过实现接口并从那里调用C ++函数。接口通常用于声明函数,但实际上并不实现函数。

答案 1 :(得分:0)

结束修改我传递auth标头的方式

@GET("/some_end_point/")
Observable<PlaceLocations> getPlaces(@Header("client_id") String authKey,@Path("name") String name);