Проблемы с webRequest при PОST запросе

 

вообщем вот так отсылаю запрос 


string filename = "EURGBP.rann60.JSON";
char   data[];
char    gdata[];
string gheader;
int fsize =0;


void OnStart()
  {
   
   int filehandle=FileOpen(filename,FILE_READ|FILE_BIN);
   Print (FileSize(filehandle));
   uint x = FileReadArray(filehandle,data,0,FileSize(filehandle));
   FileClose(filehandle);
 
//************************************  
  int res=WebRequest("POST","https://url.org/post_news","",-1,data,gdata,gheader);
  string gstr = CharArrayToString(gdata);
  Print (gheader, "   +++++   ", gstr);

  }

в файле "EURGBP.rann60.JSON" вот такой текст 

{

"shortDescription": {"ro": "", "ru": "", "en": ""},

"description": {"ro": "", "ru": "", "en": ""},

"direction": 2,

"price": 2.01584,

"datetimeFormation":"2020.07.10 00:52",

"swichModelName":"Dim",

"swichModelType":2,

"timeFrame": ["H1", "H4", "D1", "W1", "MN"],

"tool":"EURGBP.rann",

"image":

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAEsCAYAAACG+vy+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACy9SURBVHhe7Z27qz1Hkuf1t/R/sLDWhf4jxpHb3vVkrNWsKbXTu9a1BnZBln
ZpY4yhnQsLgwwtDCvBjmARLMMPBDKGHw2tNrqdbutMPCqyvhkVWY9Tj5N5b1byoSIjn5EVUY9z7q3zCW23TqdTJFR2Oh1Fhb717ewNnK4lVKjBgF//9r+F

но на сервер почему то "+" приходит как "пробел". 

На питоне код: 

import requests
from json import loads

url = "https://srforex.itways.org/post_news?mode=test"

with open('1.json', 'rb') as f:
  data = loads(f.read())

  к = requests.post(url, json=data)
  

и все приходит нормально. 

В чем проблема может быть ? 

Проблема может быть и не в "+". о код на питоне отсылает правильный запрос а на Mql - неправильный

 
Dmitiry Ananiev:

вообщем вот так отсылаю запрос 


в файле "EURGBP.rann60.JSON" вот такой текст 

но на сервер почему то "+" приходит как "пробел". 

На питоне код: 


и все приходит нормально. 

В чем проблема может быть ? 

в BASE64 нет символа +, должно быть поэтому
 
Maxim Kuznetsov:
в BASE64 нет символа +, должно быть поэтому
https://base64.guru/converter/encode/image

вот на этом сайте получаем валидный BASE64. И там появляются "+". 

Вот часть сгенерированного кода: 

iVBORw0KGgoAAAANSUhEUgAAAMgAAAEsCAYAAACG+vy+AAAAAXNSR0IArs4c6QAAAAR

Base64 . Guru
  • голосов: 2
  • 2020.06.28
  • base64.guru
Hey Amigos ...Id like to convert a list of urls image to base64...how can I do that?...I have urls in a .csv
 
Maxim Kuznetsov:
в BASE64 нет символа +, должно быть поэтому

Вот и в коде Рената есть такой символ 

static int ExtBase64Encode[64]={ 'A','B','C','D','E','F','G','H','I','J','K','L','M',
                                 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
                                 'a','b','c','d','e','f','g','h','i','j','k','l','m',
                                 'n','o','p','q','r','s','t','u','v','w','x','y','z',
                                 '0','1','2','3','4','5','6','7','8','9','+','/'      };
 
Есть у кого то пример как сделать такой POST запрос через wininet.dll  ?