iMacros Http POST到API端点

iMacros Http POST到API端点,post,http-post,imacros,Post,Http Post,Imacros,我想从iMacro内部到API端点执行httppost。实际上,类似于以下内容: curl -d "data=foo" http://example.com/API 在iMacros中,它可能看起来像这样: 我的imacro.iim VERSION BUILD=10.4.28.1074 TAB T=1 URL GOTO=javascript:post('http://example.com/API', {data: 'foo'}); function post(path, params,

我想从iMacro内部到API端点执行
httppost
。实际上,类似于以下内容:

curl -d "data=foo" http://example.com/API
在iMacros中,它可能看起来像这样:

我的imacro.iim
VERSION BUILD=10.4.28.1074
TAB T=1
URL GOTO=javascript:post('http://example.com/API', {data: 'foo'});
  function post(path, params, method) {
    // Reference: http://stackoverflow.com/a/133997/1640892
    method = method || "post";
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);
    for (var key in params) {
      if (params.hasOwnProperty(key)) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);
        form.appendChild(hiddenField);
      }
    }
    document.body.appendChild(form);
    form.submit();
  }
但上述方法似乎是一个漫长而艰难的过程。如果它真的有效的话

有没有一个更简短、更直接或更高效的解决方案?

可以与javascript和jquery一起使用。然后它很容易与任何形式,获取和发布请求的东西

使用jquery和imacros for firefox的小javascript示例:
函数loadScriptFromURL(url){
var request=Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance(Components.interfaces.nsIXMLHttpRequest),
异步=假;
open('GET',url,async);
request.send();
如果(request.status!==200){
var message='在url:'+url+',状态:'+request.status;加载脚本时出错;
iimDisplay(消息);
返回false;
}
eval(请求、响应);
返回true;
}
loadScriptFromURL('https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js');
$=窗口。$,

JQuery=window.JQuery如果您正在搜索更干净、更高效的解决方案,则需要知道JavaScript将仅在Firefox iMacros插件中工作。这个脚本不能与iMacros插件版本9.0.3一起使用

无法从.js文件(窗口、内容)中的javascript访问网页DOM 对象)或宏(URL GOTO=javascript:…)

最好更改API端点方法以获取。接下来,您可以创建iMacros.iim文件,该文件从网页中提取一些属性,并通过GET方法将其发送到API端点,如

可能是
XMLHttpRequest()
而不是
function post()
' extract header
TAG POS=1 TYPE=span ATTR=id:header EXTRACT=txt
SET !VAR1 header={{!EXTRACT}}
SET !EXTRACT NULL

' extract phone
TAG POS=1 TYPE=span ATTR=class:phone EXTRACT=txt
SET !VAR1 {{!VAR1}}&phone={{!EXTRACT}}
SET !EXTRACT NULL

' ///open new tab
TAB OPEN
TAB T=2
' ///Basic Auth credentials to API Endpoint
ONLOGIN USER=XXX PASSWORD=XXX
URL GOTO=http://localhost:8080/endpoint?{{!VAR1}}