WINAPIにてファイル(画像)を表示するプログラムを開発する予定なのですが、
// *** 必要となるAPIや定数の定義 *** // #uselib "wininet.dll" #cfunc InternetOpen "InternetOpenA" sptr, int, sptr, sptr, int #cfunc InternetOpenUrl "InternetOpenUrlA" int, str, sptr, int, int, int #func InternetQueryDataAvailable "InternetQueryDataAvailable" int, int, int, int #cfunc InternetReadFile "InternetReadFile" int, int, int, int #func InternetCloseHandle "InternetCloseHandle" int #cfunc InternetConnect "InternetConnectA" int, str, int, sptr, sptr, int, int, int #define INTERNET_OPEN_TYPE_DIRECT 1 #define INTERNET_OPTION_CONNECT_TIMEOUT 2 #define INTERNET_OPTION_HTTP_DECODING 65 #define INTERNET_DEFAULT_HTTPS_PORT 443 #define INTERNET_SERVICE_HTTP 3 #define INTERNET_FLAG_RELOAD 0x80000000 #define INTERNET_FLAG_SECURE 0x00800000 #define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 #define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE #define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x00002000 #define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x00001000 #enum HTTP_QUERY_MIME_VERSION = 0 #enum HTTP_QUERY_CONTENT_TYPE #enum HTTP_QUERY_CONTENT_TRANSFER_ENCODING #enum HTTP_QUERY_CONTENT_ID #enum HTTP_QUERY_CONTENT_DESCRIPTION #enum HTTP_QUERY_CONTENT_LENGTH #enum HTTP_QUERY_CONTENT_LANGUAGE #enum HTTP_QUERY_ALLOW #enum HTTP_QUERY_PUBLIC #enum HTTP_QUERY_DATE #enum HTTP_QUERY_EXPIRES #enum HTTP_QUERY_LAST_MODIFIED #enum HTTP_QUERY_MESSAGE_ID #enum HTTP_QUERY_URI #enum HTTP_QUERY_DERIVED_FROM #enum HTTP_QUERY_COST #enum HTTP_QUERY_LINK #enum HTTP_QUERY_PRAGMA #enum HTTP_QUERY_VERSION #enum HTTP_QUERY_STATUS_CODE #enum HTTP_QUERY_STATUS_TEXT #enum HTTP_QUERY_RAW_HEADERS #enum HTTP_QUERY_RAW_HEADERS_CRLF #enum HTTP_QUERY_CONNECTION #enum HTTP_QUERY_ACCEPT #enum HTTP_QUERY_ACCEPT_CHARSET #enum HTTP_QUERY_ACCEPT_ENCODING #enum HTTP_QUERY_ACCEPT_LANGUAGE #enum HTTP_QUERY_AUTHORIZATION #enum HTTP_QUERY_CONTENT_ENCODING #enum HTTP_QUERY_FORWARDED #enum HTTP_QUERY_FROM #enum HTTP_QUERY_IF_MODIFIED_SINCE #enum HTTP_QUERY_LOCATION #enum HTTP_QUERY_ORIG_URI #enum HTTP_QUERY_REFERER #enum HTTP_QUERY_RETRY_AFTER #enum HTTP_QUERY_SERVER #enum HTTP_QUERY_TITLE #enum HTTP_QUERY_USER_AGENT #enum HTTP_QUERY_WWW_AUTHENTICATE #enum HTTP_QUERY_PROXY_AUTHENTICATE #enum HTTP_QUERY_ACCEPT_RANGES #enum HTTP_QUERY_SET_COOKIE #enum HTTP_QUERY_COOKIE #enum HTTP_QUERY_REQUEST_METHOD #define HTTP_QUERY_MAX 45 #define HTTP_QUERY_CUSTOM 65535 #define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000 #define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000 #define HTTP_QUERY_FLAG_NUMBER 0x20000000 #define HTTP_QUERY_FLAG_COALESCE 0x10000000 #define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS|HTTP_QUERY_FLAG_SYSTEMTIME|HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_FLAG_COALESCE) #define HTTP_QUERY_HEADER_MASK (HTTP_QUERY_MODIFIER_FLAGS_MASK) #define global METHOD_GET 0 #define global METHOD_POST 1 #define global METHOD_DELETE 2 #define global METHOD_PUT 3 #define global FORMAT_JSON 0 #define global FORMAT_XML 1 // *** ウィンドウの作成や設定 *** // screen 0, 900, 600, SCREEN_HIDE title "ViewOneEight" // *** 最終処理 *** // gsel 0, 1 hInternet = InternetOpen( null, INTERNET_OPEN_TYPE_DIRECT, null, null, 0 ) if ( hInternet == null ) { dialog "インターネットの接続に失敗しました", 1 end } hService = InternetOpenUrl( hInternet, "https://www.onionsoft.net/hsp/v36/doclib/hsp3ttl.jpg", null, 0, INTERNET_FLAG_RELOAD, 0 ) if ( hService == null ) { dialog "URLのリクエストに失敗しました", 1 end } InternetQueryDataAvailable hService, varptr(availableSize), 0, 0 sdim responseBuffer, ( availableSize + 1 ) responseBody = "" repeat response = InternetReadFile( hService, varptr(responseBuffer), availableSize, varptr(hSize) ) if ( response == 0 ) { break } if ( hSize < 1 ) { break } responseBody += strmid( responseBuffer, 0, hSize ) await 0 loop InternetCloseHandle hService InternetCloseHandle hInternet memfile responseBody picload "MEM:a.jpg" stop
応答なしとなってしまいます。どうすれば問題を解決できるのでしょうか?
調べたところ、APIは正常に動作しましたが、リクエストするファイルのデータが異なっていました。
※ https://www.onionsoft.net/hsp/v36/doclib/hsp3ttl.jpg を
https://www.onionsoft.net/hsp/v36/doclib/hsp3ttl.txt としてメモ帳かなんかで閲覧して比較しました。