bolue เขียน: ↑08/09/2022 9:34 am ต้องมีการ try Except ค่ะ ตัวอย่างและกลับไปใช้ execute เหมือนเดิมค่ะโค้ด: เลือกทั้งหมด
public void sendGetRequest(String url) throws IOException { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(url).build(); try (Response response = client.newCall(request).execute()) { String responseBody = response.body().string(); // ... do something with response } }
ในการดึง API มาใช้ในตัว โมบายแอฟ
Moderator: mindphp, ผู้ดูแลกระดาน
- MBMoo
- PHP VIP Members
- โพสต์: 25635
- ลงทะเบียนเมื่อ: 04/06/2020 10:05 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
เพิ่ม throws IOException ไปด้วยค่ะ
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
ปรับแก้ เพิ่ม (String url) throws IOException
เออเร่อที่เกิดขึ้นค่ะ
โค้ด: เลือกทั้งหมด
public void PDFtpic (String url) throws IOException{
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{" +
"\r\n \"pdf_base64\": \"(ใส่ base64)\"," +
"\r\n \"username\": \"(ใส่ ชื่อู้ใช้)\"," +
"\r\n \"name_pdf\": \"(ใส่ ชื่อ PDF)\"," +
"\r\n \"type_file_pdf\": \"(ใส่ ประเภท PDF)\"\r\n}");
Request request = new Request.Builder().url("http://127.0.0.1:8000/api_pdftopic").build();
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
// ... do something with response
}
Response response = client.newCall(request).execute();
}
C:\Users\fonfo\AndroidStudioProjects\PDFToolkits\app\src\main\java\com\example\pdftoolkits\PDFtoPic.java:56: error: incompatible types: try-with-resources not applicable to variable type
try (Response response = client.newCall(request).execute()) {
^
(Response cannot be converted to AutoCloseable)
you're the only one treasure
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
จากที่พี่แนะนำมานะคะ เออเร่อ .execute() หายไปเพราะใส่ throws IOException และทดสอบเขียนฟังก์ชันแยก จากกนั้นเรียกใช้งานฟังก์ชันในปุ่มที่ต้องการ เออเร่อ.execute() ในส่วนเดิมหายไปแล้วค่ะ สามารถรันแอปพลิเคชั่นขึ้นมาได้
เมื่อทดสอบกดปุ่มที่มีการเรียกใช้งานฟังก์ชันแอฟพลิเคชั่นหยุดการทำงานและ มีการแจ้งเออเร่อตามนี้ค่ะ
โค้ด: เลือกทั้งหมด
public void PDFtpic (View view) throws IOException {
// startActivity(new Intent(this,watermark.class));
// OkHttpClient client = new OkHttpClient();
// MediaType mediaType = MediaType.parse("application/json");
// RequestBody body = RequestBody.create(mediaType, "{\r\n \"curPage\": \"1\"\r\n}");
// Request request = new Request.Builder()
// .url("http://127.0.0.1:8000/page")
// .method("POST", body)
// .addHeader("Content-Type", "application/json")
// .build();
// client.newCall(request).execute();
// Response response = client.newCall(request).execute();
sendGetRequest();
}
public void sendGetRequest() throws IOException {
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"curPage\": \"1\"\r\n}");
Request request = new Request.Builder()
.url("http://127.0.0.1:8000/page")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
client.newCall(request).execute();
}
}
2022-09-08 12:35:25.148 28830-28830/com.example.pdftoolkits E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pdftoolkits, PID: 28830
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:446)
at android.view.View.performClick(View.java:5638)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
at android.view.View$PerformClick.run(View.java:22430)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441)
at android.view.View.performClick(View.java:5638)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
at android.view.View$PerformClick.run(View.java:22430)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1373)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
at java.net.Socket.connect(Socket.java:605)
at com.squareup.okhttp.internal.Platform$Android.connectSocket(Platform.java:190)
at com.squareup.okhttp.Connection.connectSocket(Connection.java:196)
at com.squareup.okhttp.Connection.connect(Connection.java:172)
at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:367)
at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)
at com.squareup.okhttp.Call.getResponse(Call.java:267)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
at com.squareup.okhttp.Call.execute(Call.java:79)
at com.example.pdftoolkits.PDFtoPic.sendGetRequest(PDFtoPic.java:71)
at com.example.pdftoolkits.PDFtoPic.PDFtpic(PDFtoPic.java:59)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441)
at android.view.View.performClick(View.java:5638)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
at android.view.View$PerformClick.run(View.java:22430)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
you're the only one treasure
- MBMoo
- PHP VIP Members
- โพสต์: 25635
- ลงทะเบียนเมื่อ: 04/06/2020 10:05 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
.url("http://127.0.0.1:8000/page") เปลี่ยนเป็น ip ตัวเครื่องหลัก มาใช้แทน นะคะ
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
จากที่พี่แนะนำ ลองเอา IP Address ของเครื่องที่ใช้อยู่แทน host โดยมีการรันในส่วนของ python คือ
เมื่อสั่งรันแล้ว จากนั้นไปทำการเปลี่ยน url ในโค้ดของ โมบายแอฟ
จากนั้นทำการสั่งรันแล้วกดปุ่มที่มีการเรียกใช้งานฟังก์ชั่น เกิดเออเร่อคือ
โค้ด: เลือกทั้งหมด
uvicorn main:app --reload --host 192.***.**.***
โค้ด: เลือกทั้งหมด
public void sendGetRequest() throws IOException {
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"curPage\": \"1\"\r\n}");
Request request = new Request.Builder()
.url("http://192.***.**.***:8000/page")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
client.newCall(request).execute();
}
}
2022-09-09 09:36:29.160 4853-4853/com.example.pdftoolkits E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pdftoolkits, PID: 4853
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:446)
at android.view.View.performClick(View.java:5638)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
at android.view.View$PerformClick.run(View.java:22430)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441)
at android.view.View.performClick(View.java:5638)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
at android.view.View$PerformClick.run(View.java:22430)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1373)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
at java.net.Socket.connect(Socket.java:605)
at com.squareup.okhttp.internal.Platform$Android.connectSocket(Platform.java:190)
at com.squareup.okhttp.Connection.connectSocket(Connection.java:196)
at com.squareup.okhttp.Connection.connect(Connection.java:172)
at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:367)
at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)
at com.squareup.okhttp.Call.getResponse(Call.java:267)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
at com.squareup.okhttp.Call.execute(Call.java:79)
at com.example.pdftoolkits.PDFtoPic.sendGetRequest(PDFtoPic.java:70)
at com.example.pdftoolkits.PDFtoPic.PDFtpic(PDFtoPic.java:59)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:441)
at android.view.View.performClick(View.java:5638)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
at android.view.View$PerformClick.run(View.java:22430)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
you're the only one treasure
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
สอบถามในการดึง API มาใช้ในตัว โมบายแอฟค่ะ สามารถแก้ไขหรือปรับแก้ส่วนไหนเพิ่มเติมได้บ้างคะ
you're the only one treasure
- mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41251
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
- ติดต่อ:
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
ลองปรับเป็นรับค่า จาก json กลับมาด้วยการ เรีบก request หาไฟล์ json โดยตรง แบบไม่ต้องส่ง parameter เพื่อข้ามขั้นตอนที่ติด อยูไปทำส่วนอื่นก่อน
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
เนื่องจากยังไม่เคยทำงานในลักษณะนี้ จากที่พี่แนะนำมา ยังไม่เข้าใจค่ะ รบกวนอธิบายเพิ่มเติมหรือยกตัวอย่างเพิ่มเติมทีค่ะ
you're the only one treasure
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: ในการดึง API มาใช้ในตัว โมบายแอฟ
สอบถามในการดึง API มาใช้ในตัว โมบายแอฟค่ะ สามารถแก้ไขหรือปรับแก้ส่วนไหนเพิ่มเติมได้บ้างคะ
you're the only one treasure
-
- Similar Topics
- ตอบกลับ
- แสดง
- โพสต์ล่าสุด
-
-
โพสต์ใหม่ การเรียก reCaptcha มาใช้ แบบไม่ผ่าน XML Form
โดย tsukasaz » 06/07/2021 6:28 pm » ใน Joomla Developing Knowledge - 0 ตอบกลับ
- 1030 แสดง
-
โพสต์ล่าสุด โดย tsukasaz
06/07/2021 6:28 pm
-
-
-
โพสต์ใหม่ มาใช้ php Swoole เขียน CI/CD ไว้ใช้งานกัน และ รวมคำสั่งจำเป็นสำหรับ DevOps
โดย mindphp » 18/06/2022 4:49 pm » ใน PHP Knowledge - 1 ตอบกลับ
- 793 แสดง
-
โพสต์ล่าสุด โดย mindphp
19/06/2022 7:23 am
-
-
-
โพสต์ใหม่ ต้องการดึง Path avatar user ใน phpbb มาใช้
โดย thatsawan » 11/05/2019 5:58 pm » ใน Programming - PHP - 1 ตอบกลับ
- 1368 แสดง
-
โพสต์ล่าสุด โดย thatsawan
14/05/2019 3:52 pm
-
-
- 2 ตอบกลับ
- 1306 แสดง
-
โพสต์ล่าสุด โดย Ittichai_chupol
09/05/2019 7:58 pm
ผู้ใช้งานขณะนี้
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 2