Android Question [SOLVED] Send LINE Notifity With B4A

Jones Hone

Active Member
Licensed User
Longtime User
There is an error message in my program, how can I solve it.
B4X:
'Reference: HTTP & HttpUtils2 Library
Dim http As HttpJob
Dim url As String
url = "https://notify-api.line.me/api/notify"
http.Initialize("",Me)
http.GetRequest.SetHeader("Authorization", "Bearer ZOWe17zgDOzPCwcgBvugMg4ADFeLKenIj7zmJP9MTYs")
http.GetRequest.SetContentType("application/x-www-form-urlencoded")
http.PostString(url,"message=Hollo!")
The following error message occurred: The error position is in the sixth column.
b4x]main_qr_result_found (java line: 518)
java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.http.message.AbstractHttpMessage.setHeader(java.lang.String, java.lang.String)' on a null object reference
at anywheresoftware.b4a.http.HttpClientWrapper$HttpUriRequestWrapper.SetHeader(HttpClientWrapper.java:449)
at JHS.QRCodeReaderView.main._qr_result_found(main.java:518)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:196)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:180)
at qrcodereaderviewwrapper.qrCodeReaderViewWrapper$1.result_found(qrCodeReaderViewWrapper.java:103)
at com.dlazaro66.qrcodereaderview.QRCodeReaderView.invokeResultFound(QRCodeReaderView.java:272)
at com.dlazaro66.qrcodereaderview.QRCodeReaderView.onPreviewFrame(QRCodeReaderView.java:153)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1263)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:169)
at android.app.ActivityThread.main(ActivityThread.java:6578)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.http.message.AbstractHttpMessage.setHeader(java.lang.String, java.lang.String)' on a null object reference
 

DonManfred

Expert
Licensed User
Longtime User
Last edited:
Upvote 0

eps

Expert
Licensed User
Longtime User
The Authorization part of the Header you are setting looks odd to me... Is this as per the documentation for that endpoint?
 
Upvote 0

Jones Hone

Active Member
Licensed User
Longtime User
@DonManfred:
I has switch to okhttputils2. However, there are still errors.
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'okhttp3.Request$Builder okhttp3.Request$Builder.header(java.lang.String, java.lang.String)' on a null object reference
at anywheresoftware.b4a.keywords.Common$13.run(Common.java:1692)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:169)
at android.app.ActivityThread.main(ActivityThread.java:6578)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'okhttp3.Request$Builder okhttp3.Request$Builder.header(java.lang.String, java.lang.String)' on a null object reference
at anywheresoftware.b4h.okhttp.OkHttpClientWrapper$OkHttpRequest.SetContentEncoding(OkHttpClientWrapper.java:500)
at JHS.QRCodeReaderView.main$ResumableSub_b1_Click.resume(main.java:411)
at anywheresoftware.b4a.keywords.Common$13.run(Common.java:1690)
... 7 more
@eps:
Yes, The Authorization part is as per the documentation for that endpoint.

This code was successfully executed in VB6, I want to port it to B4A.
 
Upvote 0

Jones Hone

Active Member
Licensed User
Longtime User
Maybe ask another way.
How to transfer the following vb6 code to b4a. Thank you.
VB6 Code:
Dim HttpClient As Object,url As String
Set HttpClient = CreateObject("MSXML2.ServerXMLHTTP")
mKEY = "ZOWe17zgDOzPCwcgBvugMg4ADFeLKenIj7zmJP9MTYs"
msg = "message=" & vbCrLf & "This is test message."
url = "https://notify-api.line.me/api/notify"
HttpClient.Open "POST", url, False
HttpClient.SetRequestHeader "Authorization", "Bearer " & mKEY
HttpClient.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
HttpClient.Send msg
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
You need to call Job.PostString before making the changes to the request object.

 
Upvote 0

Jones Hone

Active Member
Licensed User
Longtime User
Oh, that's it! Just move ".PostString" to the front and it's ok.
Erel, Thank you very much.
B4X:
Dim http As HttpJob
Dim url As String
url = "https://notify-api.line.me/api/notify"
http.Initialize("",Me)
http.PostString(url,"message=Hollo!")
http.GetRequest.SetHeader("Authorization", "Bearer ZOWe17zgDOzPCwcgBvugMg4ADFeLKenIj7zmJP9MTYs")
http.GetRequest.SetContentType("application/x-www-form-urlencoded")
 
Upvote 0
Top