0

Google API Web ページの 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-chofUT&chl=0f9ld&chf04=M8f9ld&cht.googleapis.com/chart? |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

明らかな問題が 1 つあります。GetURL を使用し、インターネットの結果を直後にファイルに保存しようとしています。これはよくある間違いです。実際、私は PowerBuilder での非同期処理に慣れていなかったので、初めて inet オブジェクトを使用しようとしたときに同じ間違いを犯しました。

InternetResult オブジェクトは、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 に答える