wininet.dllを使って、gasのpost通信をしたいです。
gasの方は、htmlファイルで確認して、post通信できていました。
そもそも、mt4からの通信は行ってないです。
エラーは、「ページが見つかりません」となっています。
詳しくは以下の通りです。
error
<!DOCTYPE html><html lang="ja"> <head> <meta name="description" content="ウェブ ワープロ、プレゼンテーション、スプレッドシート"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"> <link rel="shortcut icon" href="//docs.google.com/favicon.ico"> <title>ページが見つかりません</title> <meta name="referrer" content="origin"> <link href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet" type="text/css" nonce="UhiRvDbc7RMIj55gUC_5gw"><style nonce="UhiRvDbc7RMIj55gUC_5gw"> /* Copyright 2022 Google Inc. All Rights Reserved. */ ...
mql4
#property strict #property indicator_chart_window #import "wininet.dll" #define INTERNET_OPEN_TYPE_DIRECT 0 #define AGENT "MetaTrader 5 Terminal ss Auth 2022" #define READURL_BUFFER_SIZE 100000 #define INTERNET_DEFAULT_HTTPS_PORT 443 #define INTERNET_DEFAULT_HTTP_PORT 80 #define INTERNET_SERVICE_HTTP 3 #define INTERNET_FLAG_RELOAD -2147483648 int InternetOpenW( string sAgent, int lAccessType, string sProxyName="", string sProxyBypass="", int lFlags=0 ); int InternetOpenA( string lpszAgent, int dwAccessType, string lpszProxy, string lpszProxyBypass , int dwFlags); int InternetOpenUrlW( int hInternetSession, string sUrl, string sHeaders="", int lHeadersLength=0, int lFlags=0, int lContext=0 ); int InternetConnectW( int iHandle, string, int, string, string, int, int, int ); int InternetReadFile( int, uchar &arr[], int, int &arr[] ); int InternetCloseHandle( int hInet ); int HttpOpenRequestW( int iConnect, string lpszVerb, string lpszObjectName, string lpszVersion, string lpszReferrer, string lplpszAcceptTypes, int dwFlags, int dwContext ); bool HttpSendRequestW( int iRequest, string& lpszHeaders, int dwHeadersLength, uchar& lpOptional[], int dwOptionalLength ); #import //https://script.google.com/macros/s/AKfycbwn9nAniZRpsheIzHcSsjO8Q01NW61pjzIMwRN4TxorC-m3k8LqGdfr65egboaN-Bh35A/exec string post_request() { int lReturn[1]; uchar arrReceive[]; uchar data[]; //string strUrl = "https://script.google.com"; //string header = "Content-Type: text/plain;charset=utf-8"; //string header = "Content-Type: application/x-www-form-urlencoded"; string header = "Content-Type: application/json"; string domain = "script.google.com"; string methods = "POST"; string http_type = "HTTP/1.1"; string request_url = "macros/s/AKfycbwn9nAniZRpsheIzHcSsjO8Q01NW61pjzIMwRN4TxorC-m3k8LqGdfr65egboaN-Bh35A/exec"; string mydata = "{\"value\": \"AAA\"}"; StringToCharArray( mydata, data ); int hSession = InternetOpenW( AGENT, INTERNET_OPEN_TYPE_DIRECT, "0", "0", 0 ); int hConnect = InternetConnectW( hSession, domain, INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, 2, 0, 0 ); int hRequest = HttpOpenRequestW( hConnect, methods, request_url, http_type, NULL, NULL, INTERNET_FLAG_RELOAD, 0 ); bool check = HttpSendRequestW( hRequest, header, StringLen( header ), data, ArraySize( data ) - 1 ); if( !check ) Alert( "check : ", check ); Alert( "mydata : ", mydata ); ArrayResize( arrReceive, READURL_BUFFER_SIZE + 1 ); int success = InternetReadFile( hRequest, arrReceive, READURL_BUFFER_SIZE, lReturn ); string errmes = "Authentication failure - Error connecting to server : by ss"; if( success == 0 ){ InternetCloseHandle( hSession ); //return errmes; } string strThisRead = CharArrayToString( arrReceive, 0, ArraySize( arrReceive ), CP_UTF8 ); InternetCloseHandle( hSession ); Alert( strThisRead ); return "ok"; } int OnInit() { Alert( post_request() ); return INIT_SUCCEEDED; } void OnDeinit( const int reason ) { } int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { return rates_total; }
gas
function get_sheet() { const SHEET_NAME = "シート1" var active_st = SpreadsheetApp.getActiveSpreadsheet(); var sheet = active_st.getSheetByName( SHEET_NAME ); return sheet; } function doPost(e) { Logger.log(e); /* var name = e.parameter.name; var hobby = e.parameter.hobby; var sheet = get_sheet(); sheet.appendRow( [name, hobby] ) return ContentService.createTextOutput('私の名前は'+name+'、趣味は'+hobby); */ var params = JSON.parse(e.postData.getDataAsString()); // ※ var value = params.value; // => "AAA"が取れる // 何らかの処理... var output = ContentService.createTextOutput(); output.setMimeType(ContentService.MimeType.JSON); output.setContent(JSON.stringify({ message: "success!" })); return output; }
以上、よろしくお願いいたします。
まだ回答がついていません
会員登録して回答してみよう