WebRequest no PUT method ?

To add comments, please log in or register
vual
18
vual  

I have much success using WebRequest function from mt4 but i would like to ask does mt4 not support PUT method ?

POST and GET work great, but PUT always fails, the error suggests my parameters are wrong, i use the same as a POST i checked on my API using curl and it works fine yet MT4 seems to not understand the method PUT, is this true? I know DELETE is not supported so i wonder is PUT also not supported?

Mladen Rakic
139664
Mladen Rakic  
HTTP Verb CRUD Entire Collection (e.g. /customers) Specific Item (e.g. /customers/{id})
POST Create 201 (Created), 'Location' header with link to /customers/{id} containing new ID. 404 (Not Found), 409 (Conflict) if resource already exists..
GET Read 200 (OK), list of customers. Use pagination, sorting and filtering to navigate big lists. 200 (OK), single customer. 404 (Not Found), if ID not found or invalid.
PUT Update/Replace 405 (Method Not Allowed), unless you want to update/replace every resource in the entire collection. 200 (OK) or 204 (No Content). 404 (Not Found), if ID not found or invalid.
PATCH Update/Modify 405 (Method Not Allowed), unless you want to modify the collection itself. 200 (OK) or 204 (No Content). 404 (Not Found), if ID not found or invalid.
DELETE Delete 405 (Method Not Allowed), unless you want to delete the whole collection—not often desirable. 200 (OK). 404 (Not Found), if ID not found or invalid.
vual
18
vual  
Mladen Rakic:
HTTP Verb CRUD Entire Collection (e.g. /customers) Specific Item (e.g. /customers/{id})
POST Create 201 (Created), 'Location' header with link to /customers/{id} containing new ID. 404 (Not Found), 409 (Conflict) if resource already exists..
GET Read 200 (OK), list of customers. Use pagination, sorting and filtering to navigate big lists. 200 (OK), single customer. 404 (Not Found), if ID not found or invalid.
PUT Update/Replace 405 (Method Not Allowed), unless you want to update/replace every resource in the entire collection. 200 (OK) or 204 (No Content). 404 (Not Found), if ID not found or invalid.
PATCH Update/Modify 405 (Method Not Allowed), unless you want to modify the collection itself. 200 (OK) or 204 (No Content). 404 (Not Found), if ID not found or invalid.
DELETE Delete 405 (Method Not Allowed), unless you want to delete the whole collection—not often desirable. 200 (OK). 404 (Not Found), if ID not found or invalid.
so does mt4 support PUT ?? cause they dont supprot DELETE...
are you just a bot ??
vual
18
vual  
I do appreciate your table but still i need to know does mt4 actually support PUT and DELETE or not ?
Sorry to bump may anyone kindly reply ? thanks kindly i truly appreciate it.
Mohammad Hossein Sadeghi
2367
Mohammad Hossein Sadeghi  
vual:
I do appreciate your table but still i need to know does mt4 actually support PUT and DELETE or not ?
Sorry to bump may anyone kindly reply ? thanks kindly i truly appreciate it.

According to manual, WebRequest only supports GET and POST, at ports 80 or 443.

vual
18
vual  
Mohammad Hossein Sadeghi:

According to manual, WebRequest only supports GET and POST, at ports 80 or 443.

Thanks kindly what a shame that really is :( what options do i have to make a put request ? Wininet.Dll maybe ?
https://www.mql5.com/en/forum/165618
Does WebRequest function support HTTP DELETE?
Does WebRequest function support HTTP DELETE?
  • 2017.01.06
  • www.mql5.com
I have HTTP Delete method API call via WebRequest, but it reported an error with "Error in WebRequest. Error code =4051...
vual
18
vual  
Any idea why this does not work with SSL? Thanks alot for any assistance.
Code attached:
//custom PUT method, web request doest not support PUT
bool HttpPUT(string host, string script, string& strWebPage, string headers, string jsonData)
{
  printf(jsonData);
  int hIntrn = InternetOpenW("cloneTrade-mt4-ea", 1, "0", "0", 0);
  if (hIntrn == 0) {
    return (false);
  }

  int hConn = InternetConnectW(hIntrn,
                              host,
                              443,
                              "",
                              "",
                              3,
                              0,
                              1);

  if (hConn == 0) {
    return (false);
  }

 //int dwOpenRequestFlags =   // _IGNORE_REDIRECT_TO_HTTP |
                             // _IGNORE_REDIRECT_TO_HTTPS |
                             // INTERNET_FLAG_KEEP_CONNECTION |
                             // INTERNET_FLAG_NO_AUTO_REDIRECT |
                             // INTERNET_FLAG_NO_COOKIES |
                             // INTERNET_FLAG_NO_CACHE_WRITE |
                             //INTERNET_FLAG_NO_UI
                             //;

  string accept[];
  //string headers = "Content-Type: application/x-www-form-urlencoded";
  string data = jsonData;
  //string acceptTypes[1] = {"*/*"};
  char acceptTypes[];
  int hReq = HttpOpenRequestW(hConn,
                             "PUT",
                             script,
                             "HTTP/1.1",
                             "",
                             acceptTypes,
                             0,
                             0);

  
  int request[];
  if (!HttpSendRequestW(hReq, headers , StringLen(headers), data, StringLen(data))) {
    Print(GetLastError());
    printf("Last MSDN Error =: ", kernel32::GetLastError());
    return (false);
  }

  // Read response

  int     lReturn[]  = {1};
  string  sBuffer    = "";

  while (TRUE) {
    if (InternetReadFile(hReq, sBuffer, StringLen(sBuffer), lReturn) <= 0 || lReturn[0] == 0) {
      break;
    }
    strWebPage = StringConcatenate(strWebPage, StringSubstr(sBuffer, 0, lReturn[0]));
  }

  InternetCloseHandle(hReq);
  InternetCloseHandle(hConn);
  InternetCloseHandle(hIntrn);

  return (true);
}
To add comments, please log in or register