0

我正在使用来自 google api 网页的 QR 码生成器,并尝试下载由传递的数据生成的 QR 图像。

我的问题是,如果我将 URL 放入浏览器(已尝试使用 Chrome 和 IE,并且可以正常工作),我会得到预期的 QR 图像,我可以使用其中的“另存为”命令进行下载,就可以了。但是当我使用相同的 URL,并使用 powerbuilder 中的 GetURL 函数传递它时,显示的 QR 码与我直接使用浏览器得到的不同。

URL是:(这是一个例子或将要传递的URL。每次调用的参数字符串chl都会不同。这是一个字符串,需要具有以下格式:

?re= XAXX010101000 &rr= XAXX010101000 &tt= 1234567890.123456 &id= ad662d33-6934-459c-a128-BDf0393f0f44

是会改变的粗体字符。)

https://chart.googleapis.com/chart?cht=qr&chs=480x480&chl=%3Fre%3DXAXX010101000%26rr%3DXAXX010101000%26tt%3D1234567890.123456%26id%3Dad662d33-6934-459c-a128&choef=MUTF03 |5

扫描后的 QR 码结果仅返回“?re=XAXX010101000”部分作为已编码,字符串的其余部分显示为未“编码”。如果我更改字符串的这一部分,它会反映更改,但字符串的其余部分显示为未收到。

我用来测试的代码是:(mle_urlcbb 是我用来存储 URL 的控件,但在生产中它将动态构建)

Integer li_rc
String ls_filename

SetPointer(HourGlass!)
li_rc = iinet_base.GetURL(mle_urlcbb.text, in_irdata)
IF li_rc = 1 THEN
    ls_filename = "C:\TEST\CBB.PNG"
    in_irdata.of_WriteFile(ls_filename, in_irdata.iblob_data)
    MessageBox("Success", "CBB File Successfully downloaded")
ELSE
   MessageBox("Error", "Get CBB Failed")
END IF

我不知道有什么问题,

感谢您的回答和/或建​​议。

问候....

里卡多

4

1 回答 1

0

有一个明显的问题,您正在使用 GetURL,然后尝试将 Internet 结果保存到文件中。这是一个常见的错误,实际上我第一次尝试使用 inet 对象时犯了同样的错误,因为我不习惯在 PowerBuilder 中进行异步处理。

InternetResult 对象充当缓冲区,接收和缓存异步数据,因为它是使用 Internet 响应 GetURL 和 PostURL 函数调用而返回的。InternetResult 对象还提供处理此数据的能力。

您现在对其进行编码的方式可能在某些时候有效,但不会一直有效,因为加载时间可能不是瞬时的。您需要做的就是将写入结果的代码从现在的位置移动到 internetdata nvo 的“internetresult”事件。

所以..在继承 internetresult 的用户对象的“internetdata”事件中,您可以在此处获取结果页面数据,例如:

// in your non visual that inherited from internetresult put code in the internetdata event to capture the resultant page AFTER it is done loading. :)
string ls_data
ls_data =  String(data,EncodingANSI!)
... then write your file


RETURN 1
于 2013-12-12T13:12:14.653 回答