Power Builder - SUBIR UN ARCHIVO ASERVICIO C#CON HTTPCLIENT DESDE POWER BUILDER 2019 R3

 
Vista:

SUBIR UN ARCHIVO ASERVICIO C#CON HTTPCLIENT DESDE POWER BUILDER 2019 R3

Publicado por Alexis Leiva (1 intervención) el 15/06/2021 19:31:19
Tengo el siguiente código para consumir servicio REST en c# 1 archivo y 9 string y siempre retorna código http 400 ó 415, favor ayuda con este tema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
string ls_all_headers, ls_PicturePath, ls_boundary, ls_base64
 
long ll_filenum, ll_numbytes, ll_retorno
blob blb_file, blb_terminus, blb_filename, blb_mimetype, blb_boundary, blb_multipart
integer ll_fileclose
string ls_filename, ls_MimeType, ls_marcador
// Se esta trabajando en este metodo
 
 
is_urlapi = "http://###.###.###.###:####metodo?alf_ticket="+Trim(is_ticket)
 
 
// Datos para consumir api (metodo setear_valores_subir_documento)
iuo_jpack1.loadstring( '{ "file", "xxx","xxx","xxx","xxx","xxx","xxx","xxx","xxx","xxx"}')
 
ls_filename  = "C:\TEST\RUT.PDF"
 
// Read the file into a blob
ll_FileNum = FileOpen(ls_filename, StreamMode!)
FileReadEx(ll_FileNum, blb_file)
FileClose(ll_FileNum)
 
CoderObject lnv_CoderObject
lnv_CoderObject = Create CoderObject
ls_base64 = lnv_CoderObject.Base64Encode(blb_file)
 
 
ls_MimeType = 'application/pdf'
 
ls_BOUNDARY = "$$$Boundary$$$"
// Create component blobs
blb_boundary = blob('~r~n--' + ls_Boundary + '~r~n', EncodingUTF8!)
blb_terminus = blob('~r~n--' + ls_Boundary + '--~r~n', EncodingUTF8!)
blb_filename = blob('Content-Disposition: form-data; name="File-Name"' + '~r~n~r~n' + ls_FileName, EncodingUTF8!)
blb_mimetype = blob('Content-Disposition: form-data; name="Mime-Type"' + '~r~n~r~n' + ls_MimeType, EncodingUTF8!)
blb_file = blob( 'Content-Disposition: form-data; name="File"; filename="' + ls_FileName + '"' + '~r~n' + &
                        "Content-Type: " + ls_MimeType + "~r~n~r~n", EncodingUTF8!) + &
                        blb_file
 
// Concatenate blobs into a single multipart blob
blb_multipart = blb_boundary + &
                        blb_filename + &
                        blb_boundary + &
                        blb_mimetype + &
                        blb_boundary + &
                        blb_file + &
                        blb_terminus
 
// HTTPClient
iuo_HttpClient.clearrequestheaders()
iuo_HttpClient.setrequestheader('Access-Token',is_ticket)
iuo_HttpClient.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + ls_BOUNDARY)
 
 
//iuo_jpack1.SetValueString( "file", ls_Base64Str )
iuo_jpack1.SetValueBlob( "file", blb_multipart)
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
iuo_jpack1.SetValueString("xxx", "")
 
ls_PicturePath = String(iuo_jpack1.GetValueBlob("file"),EncodingUTF8!)
 
// Carga JSON a variable
is_json = iuo_jpack1.GetJsonString()
 
// Envia una solicitud (Request) usando el metodo POST
ii_resp_serv = iuo_HttpClient.SendRequest("POST", is_urlapi, is_json, EncodingUTF8! )
 
// Obiene data de respuesta
il_StatusCode = iuo_HttpClient.GetResponseStatusCode()
ii_resp_serv = iuo_HttpClient.GetResponseBody(is_Ret_Json)
 
IF	ii_resp_serv = 1 AND il_StatusCode = 200 THEN
 
 	iuo_HttpClient.GetResponseBody(is_Ret_Json)
 
	//Carga JSON string via jsonpackage
	iuo_jpack1.loadstring(is_Ret_Json)
 
	// Obtiene JSON string bajo key=batters
	is_key = iuo_jpack1.GetValue("success")
 
	IF	Upper(is_key) = 'FALSE' THEN
		RETURN -1
	END IF
END IF
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder