android_http_request.c 1.3 KB

12345678910111213141516171819202122232425262728
  1. #include "android_http_request.h"
  2. #include <iron_system.h>
  3. #include <jni.h>
  4. #include <string.h>
  5. #include "android_native_app_glue.h"
  6. ANativeActivity *iron_android_get_activity(void);
  7. jclass iron_android_find_class(JNIEnv *env, const char *name);
  8. void android_http_request(const char *url, const char *path, const char *data, int port, bool secure, int method, const char *header,
  9. iron_http_callback_t callback, void *callbackdata) {
  10. ANativeActivity *activity = iron_android_get_activity();
  11. JNIEnv *env;
  12. JavaVM *vm = iron_android_get_activity()->vm;
  13. (*vm)->AttachCurrentThread(vm, &env, NULL);
  14. jclass activityClass = iron_android_find_class(env, "arm.AndroidHttpRequest");
  15. jstring jstr = (*env)->NewStringUTF(env, url);
  16. jbyteArray bytes_array = (jbyteArray)((*env)->CallStaticObjectMethod(env, activityClass, (*env)->GetStaticMethodID(env, activityClass, "androidHttpRequest", "(Ljava/lang/String;)[B"), jstr));
  17. jsize num_bytes = (*env)->GetArrayLength(env, bytes_array);
  18. jbyte *elements = (*env)->GetByteArrayElements(env, bytes_array, NULL);
  19. if (elements != NULL) {
  20. callback(0, 200, (char *)elements, callbackdata);
  21. // (*env)->ReleaseByteArrayElements(env, bytes_array, elements, JNI_ABORT);
  22. }
  23. (*vm)->DetachCurrentThread(vm);
  24. }