Spanish Llamar a un Web Api de punto net desde b4a.

samperizal

Active Member
Licensed User
Longtime User
Saludos.

Tengo un Web Api realizado en .net y quiero poder ejecutarlo desde b4a.
curl -X 'POST' \
'http://localhost:5121/processing/process' \
-H 'accept: */*' \
-H 'Content-Type: multipart/form-data' \
-F 'Token=12222222' \
-F 'File=@22475-0CCC0268-A376-41AA-AB08-EC1B1C9B2A40 - copia - copia.jpg;type=image/jpeg' \
-F 'ReturnThumbnail=false' \
-F 'OptionalParameters='

Alguien me puede ayudar para pasar esa llamada a b4a.

He intentado con este
Codigo:
    Dim Token As String
    Token = "*************"
    Dim img As String = "1.jpg"
    Dim URL As String = "https://api.prueba.com:8443/processing/process"
    
    Dim m As Map = CreateMap("ReturnThumbnail": "True","OptionalParameters": "")
'   
'   
    Dim job As HttpJob
    job.Initialize("", Me)
    job.GetRequest.SetHeader("Token", Token)
    job.GetRequest.SetContentType("application/json")
    Dim mp As MultipartFileData
    mp.Initialize
    'mp.Dir = File.DirRootExternal & "/Image/"
    mp.Dir = "/storage/emulated/0/Android/data/ID.PLacas/files"
    mp.FileName = img
    mp.KeyName = "file"
    mp.ContentType = "image/jpg"
    job.PostMultipart(URL, m, Array(mp))
    Wait For (job) JobDone(j As HttpJob)
    If j.Success Then
        Log(j.GetString)
    Else
        Log (LastException)
    End If
    job.Release

En esta línea :

job.GetRequest.SetHeader("Token", Token)

Ocurre el siguiente error:

"java.lang.NullPointerException: Attempt to invoke virtual method 'okhttp3.Request$Builder okhttp3.Request$Builder.addHeader(java.lang.String, java.lang.String)' on a null object reference"
 

drgottjr

Expert
Licensed User
Longtime User
las "cabeceras" vienen despues de la solicitud...
B4X:
    job.PostMultipart(URL, m, Array(mp))
    job.GetRequest.SetHeader("Token", Token)
    job.GetRequest.SetContentType("application/json")

pruebalo. (por si quieres saber: la solicitud todavia no esta inicializada. estas intentando anadir cabeceras a un objeto nulo. haz la solicitud (si inicializa en este momento) y anades las cabeceras. ya se que no tiene sentido, pero funciona asi y alabado sea dios)
 
Last edited:

samperizal

Active Member
Licensed User
Longtime User
Saludos. Gracias por la respuesta.
Con el código se soluciono el error y ahora la aplicación se queda colgada y no pasa de
Wait For (job) JobDone(j As HttpJob) y al rato dice que la aplicación no responde. Como lo puedo solucionar?
 

drgottjr

Expert
Licensed User
Longtime User
hombre, fijate: no conozco la url, no se como funciona,
no se si todos los parametros e identificadores usados son correctos, no se si tienes
derecho de acceder al directorio mentado (ademas, no se recomienda referirse
a el de la manera que has usado). etc, etc. todo esto aparte, en principio la solicitud
deberia funcionar (miles de miembros del foro utilizamos okhttputils2 a diario para
cargar y descargar recursos).
el mensaje "no responde" podria indicar otro tipo de error. no se sabe exactamente donde
se cuadra la solicitud al servidor dentro de tu aplicacion.
 
Top