Power Builder - Problemas al tratar de subir archivos a DropBox

 
Vista:
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 19/05/2020 15:19:59
Alguien ya pudo hacer esto:

Utilizar DropBox para subir archivos desde PB, vi este video:
pero no puedo ni siquiera logearme, me marca error de bad request

Error

Este es el código que utilizo
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
Integer li_rc
String ls_body, ls_json
Long ll_root, ll_item
Blob lb_json
OAuthClient	     lo_client
OAuthRequest     loa_request
ResourceResponse lrr_response
JSONGenerator    ljg_json
 
ljg_json = CREATE JSONGenerator
ll_root  = ljg_json.CreateJSONObject()
ll_item  = ljg_json.AddItemString(ll_root,"path",par_path)
ls_json  = ljg_json.GetJSONString()
lb_json  = Blob(ls_json,encodingUTF8!)
 
lo_client          = CREATE OAuthClient
loa_request.Method = "POST"
 
loa_request.SetHeader("User-Agent","RevueltaSIP")
loa_request.SetHeader("Accept","application/json")
loa_request.SetHeader("Contet-Type","application/json")
loa_request.SetAccessToken(sle_token.text)
loa_request.URL = "https://api.dropboxapi.com/2/files/list_folder"
loa_request.SetBody(lb_json)
li_rc = lo_Client.RequestResource(loa_request,lrr_response)
if li_rc = 1 then
	li_rc = lrr_response.GetStatusCode()
	if li_rc = 200 then
		lrr_response.GetBody(par_body)
		lrr_response.GetHeader(par_header)
	else
		li_rc = -1
	end if
end if
if li_rc = -1 then
	par_body = "Error - Status code: " + String(lrr_response.GetStatusCode()) + " " + lrr_response.GetStatusText() + "~r~n" + lrr_response.GetHeaders()
end if
 
Return li_rc
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

Problemas al tratar de subir archivos a DropBox

Publicado por Bunker (149 intervenciones) el 19/05/2020 19:25:01
Adolfo

lamentablemente no llegue a probarlo
expiro las Ver 2019 R2 y todavia no encuentro
la Receta para medicarlo

Se ve muy bueno todas las APIS

Si sabes algo respecto a que medicina se debe dar se agradece

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 21/05/2020 18:30:10
Ya lo resolví:

Funcionando

Este es el código para consultar la lista de archivos en la cuenta:
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
String ls_body, ls_json, ls_cursor, ls_hasmore, ls_row, ls_car, ls_tag, ls_nombre, ls_fec1, ls_fec2, ls_tam, ls_more, ls_id
ULong ll_root, ll_i, ll_j, ll_tam
Integer li_i
Blob lb_json
JSONGenerator ljg_json
OAuthClient	lo_client
OAuthRequest loa_request
ResourceResponse lrr_response
 
ljg_json = CREATE JSONGenerator
ll_root  = ljg_json.CreateJSONObject()
 
ljg_json.AddItemString(ll_root,"path","")
ls_json = ljg_json.GetJSONString()
lb_json = Blob(ls_json,encodingUTF8!)
loa_request.SetBody(lb_json)
 
loa_request.Method = "POST"
loa_request.SetAccessToken(sle_token.text)
loa_request.SetHeader("Content-Type","application/json")
loa_request.URL = "https://api.dropboxapi.com/2/files/list_folder"
lo_client = CREATE OAuthClient
if lo_client.RequestResource(loa_request,lrr_response) = 1 then
	lrr_response.GetBody(ls_body)
else
	mle_resultado.text = "~r~n" + "Error - Status code: " + String(lrr_response.GetStatusCode()) + " " + lrr_response.GetStatusText()
	Return
end if
 
if lo_client.RequestResource(loa_request,lrr_response) = -1 then
	mle_resultado.text = "~r~n" + "Error - Status code: " + String(lrr_response.GetStatusCode()) + " " + lrr_response.GetStatusText()
	Return
end if
 
lrr_response.GetBody(ls_body)
dw_archivos.reset()
ls_body = Mid(ls_body,2)
ls_body = Left(ls_body,Len(ls_body) - 1)
ls_body = ReempChar(ls_body,'"','')  //Esta función reemplaza un caracter por otro en toda la cadena
ls_body = ReempChar(ls_body,' ','')
 
ll_i = Pos(ls_body,"has_more")       //si has_more vale true hay mas archivos a recuperar
if ll_i > 0 then                     //se debe utilizar la api: https://api.dropboxapi.com/2/files/list_folder/continue
	ls_hasmore = Mid(ls_body,ll_i)    //y pasar cursor como parametro para recuperar mas archivos
	ls_hasmore = entry(ls_hasmore,2,':')
	ls_more    = ls_hasmore
	ll_i       = ll_i - 2
	ls_body    = Left(ls_body,ll_i)
	ll_i       = Pos(ls_body,"cursor")
	if ll_i > 0 then
		ls_cursor = Mid(ls_body,ll_i)
		ls_cursor = entry(ls_cursor,2,':')
		ll_i      = ll_i - 1
		ls_body   = Left(ls_body,ll_i)
	end if
end if
if Right(ls_body,1) = "," then ls_body = Left(ls_body, Len(ls_body) - 1)
 
ll_j = Len(ls_body)
for ll_i = 1 to ll_j
	ls_car = Mid(ls_body,ll_i,1)
	Choose Case ls_car
		Case '{'
			ls_row = ''
		Case '}'
			ls_tag	 = entry(ls_row,1,',')
			ls_tag    = entry(ls_tag,2,':')
			ls_nombre = entry(ls_row,2,',')
			ls_nombre = entry(ls_nombre,2,':')
			ls_id     = entry(ls_row,5,',')
			ls_id     = "id:"+entry(ls_id,3,':')
			ls_fec1   = entry(ls_row,6,',')
			ls_fec1   = Mid(ls_fec1,17)
			ls_fec2   = entry(ls_row,7,',')
			ls_fec2   = Mid(ls_fec2,17)
			ls_tam	 = entry(ls_row,9,',')
			ls_tam	 = entry(ls_tam,2,':')
			ll_tam    = Long(ls_tam)
			li_i = dw_archivos.rowcount() + 1
			dw_archivos.insertrow(li_i)
			dw_archivos.setitem(li_i,"tag",ls_tag)
			dw_archivos.setitem(li_i,"nombre",ls_nombre)
			dw_archivos.setitem(li_i,"fech1",ls_fec1)
			dw_archivos.setitem(li_i,"fech2",ls_fec2)
			dw_archivos.setitem(li_i,"tam",ll_tam)
			dw_archivos.setitem(li_i,"id",ls_id)
		Case Else
			ls_row += ls_car
	End Choose
next

Este es el codigo para subir un archivo:
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
String ls_archivo, ls_completo, ls_path
Integer ll_rc, li_rtn
OAuthClient lo_client
OAuthRequest loa_request
ResourceResponse lrr_response
Blob lb_data
 
li_rtn = GetFileOpenName("Seleccione archivo", ls_completo, ls_archivo, "*", "Archivo (*.*", GetCurrentDirectory())
if li_rtn < 1 then return
 
ls_path = '{"path":"/'+ls_archivo+'"}'
ll_rc = FileOPen(ls_completo,StreamMode!)
if ll_rc > 0 then
	ll_rc = FileReadEx(ll_rc,lb_data)
else
	mle_resultado.text = "Error al intentar abrir el archivo"
	Return
end if
 
lo_client          = CREATE OAuthClient
loa_request.Method = "POST"
loa_request.SetHeader("Content-Type","application/octet-stream")
loa_request.SetHeader("Dropbox-API-Arg",ls_path)
loa_request.SetAccessToken(sle_token.text)
loa_request.URL = "https://content.dropboxapi.com/2/files/upload"
loa_request.SetBody(lb_data)
ll_rc = lo_Client.RequestResource(loa_request,lrr_response)
if ll_rc = 1 then
	lrr_response.GetBody(mle_resultado.text)
else
	mle_resultado.text = "Error - " + lrr_response.GetStatusText()
end if
 
cb_consultar.event clicked()

Este es el codigo para descargar un archivo seleccionado en la DW:
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
String ls_path, ls_archivo, ls_arg
Long ll_rc, ll_row
Blob lb_archivo
OAuthClient lo_client
OAuthRequest loa_request
ResourceResponse lrr_response
 
ll_row = dw_archivos.GetSelectedRow(0)
if ll_row = 0 then
	MessageBox("Error","Debe seleccionar un archivo para descargar",StopSign!)
	Return
end if
ls_path = GetCurrentDirectory()
if GetFolder("Seleccione carpeta destino", ls_path) <> 1 then Return
ls_path += "\"
 
ls_archivo         = dw_archivos.GetItemString(ll_row,"id")
ls_arg             = '{"path":"'+ls_archivo+'"}'
lo_client          = CREATE OAuthClient
loa_request.Method = "POST"
loa_request.URL    = "https://content.dropboxapi.com/2/files/download"
loa_request.SetHeader("Content-Type","application/octet-stream")
loa_request.SetHeader("Dropbox-API-Arg",ls_arg)
loa_request.SetAccessToken(sle_token.text)
ll_rc = lo_Client.RequestResource(loa_request,lrr_response)
if ll_rc = 1 then
	lrr_response.GetBody(lb_archivo)
	if lrr_response.GetStatusCode() = 200 then
		mle_resultado.text = "Archivo descargado:"
		ls_archivo = ls_path + dw_archivos.GetItemString(ll_row,"nombre")
		ll_rc = FileOpen(ls_archivo,StreamMode!,Write!,LockWrite!,Replace!,EncodingANSI!)
		FileWriteEx(ll_rc,lb_archivo)
		FileClose(ll_rc)
	else
		mle_resultado.text += "~r~n" + lrr_response.GetStatusText()
	end if
else
	mle_resultado.tex
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por [email protected] (14 intervenciones) el 09/06/2020 02:30:06
Hola:

Y en que version de PB te ha funcionado. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 09/06/2020 15:01:28
PB 2019 R2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por Yonni Lopez (2 intervenciones) el 29/04/2021 01:57:35
Estimado Adolfo, dime también puedes subir carpetas? o crear carpetas desde el power builder?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 29/04/2021 19:59:01
Si este es la API, el header es el mismo: SetHeader("Content-Type","application/json")

1
https://api.dropboxapi.com/2/files/create_folder_v2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por bunker (149 intervenciones) el 30/04/2021 01:33:52
Excelente Gracias Adolfo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por Julio (5 intervenciones) el 26/02/2022 21:21:52
Hola buenas tardes,

Me podrías regalar el código de la función entry.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 28/02/2022 15:08:30
Aqui estan, son 2 funciones entry y num_entries.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por JULIO (5 intervenciones) el 28/02/2022 17:50:46
Buenos días,

Muchas gracias por los archivos.

Otra pregunta donde obtengo el SetAccessToken y si estas funciones pueden usarse con DropBox Free.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 28/02/2022 18:17:27
Anexo el procedimiento para crear una cuenta en DropBox, es parte del manual del software que hago, ahi viene como generar el Token,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por Julio (5 intervenciones) el 28/02/2022 18:38:31
Muchas gracias por el manuel, ya habia lleagdo investigando pero al final me diste la luz que estaba haciendo lo correcto.

Gracias por toda tu información
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por JULIO (5 intervenciones) el 28/02/2022 22:35:28
Que pena Adolfo puse Manuel, me traiciono el subcociente. De nuevo muchas gracias.

Te pregunto algo, has trabajado mandar mensajes desde Power Builder a Whatsapp.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 28/02/2022 22:59:08
No te preocupes, me avisas si te funciona.

Adjunto lo que tengo de WhatsApp, NOTA: Yo no lo he probado pero me dicen que si funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas al tratar de subir archivos a DropBox

Publicado por JULIO (5 intervenciones) el 28/02/2022 23:31:26
Voy a probarlo y te cuento.

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas al tratar de subir archivos a DropBox

Publicado por Julio (6 intervenciones) el 09/06/2022 20:38:54
Ya lo probe y me funcionó, muchas gracias.

Otra pregunta, tiene el codigo para crear una carpeta en dropbox.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problemas al tratar de subir archivos a DropBox

Publicado por Adolfo (260 intervenciones) el 09/06/2022 21:09:46
No tengo ese codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas al tratar de subir archivos a DropBox

Publicado por Julio (6 intervenciones) el 09/06/2022 21:21:24
Muchas gracias de todos modos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar