2016-03-20 21 views
3

Bir iMacro içinden bir API son noktasına kadar bir HTTP POST yapmak istiyorum. Etkili, aşağıdaki gibi bir şey: iMacros yılındaiMacros Http POST - API bitiş noktası

curl -d "data=foo" http://example.com/API 

, böyle görünebilir:

my-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(); 
    } 

Ama yukarıda yapmak için uzun ve zor bir yol gibi görünüyor bu. Eğer çalışırsa bile.

Daha kısa, daha doğrudan veya etkili bir çözüm var mı?

+0

Belki 'XMLHttpRequest()' yerine 'fonksiyon görevini()' oluşturabilirim? – Shugar

cevap

1

http://wiki.imacros.net/iMacros_for_Firefox javascript ve jquery ile kullanabilirsiniz. Daha sonra herhangi bir form ile kolay, istek ve istek sonrası bir şey. firefox için jquery ve iMacros ile

Küçük javascript örnek:

function loadScriptFromURL(url) { 
 
    var request = Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance(Components.interfaces.nsIXMLHttpRequest), 
 
     async = false; 
 
    request.open('GET', url, async); 
 
    request.send(); 
 
    if (request.status !== 200) { 
 
     var message = 'an error occurred while loading script at url: ' + url + ', status: ' + request.status; 
 
     iimDisplay(message); 
 
     return false; 
 
    } 
 
    eval(request.response); 
 
    return true; 
 
} 
 

 
loadScriptFromURL('https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js'); 
 
$ = window.$, 
 
JQuery = window.JQuery;

0

bunu JavaScript, yalnızca Firefox IMacros eklentisinde çalışacağını bilmek gerekir var daha temiz ve verimli bir çözüm arıyorsanız. Ve bu komut .js dosyaları (pencerenin, içerik nesneler) ya da makroları javascript web sayfası DOM erişim yok (URL GOTO javascript = 9.0.3

http://wiki.imacros.net/iMacros_for_Firefox#Version_History

IMacros eklenti sürümü ile çalışmaz: ...)

API bitiş noktası yöntemini GET olarak değiştirmek daha iyidir. Sonraki iMacros .iim web sayfasından bazı özellikleri elde etmek ve http://localhost/endpoint?param1=value1&param2=value2 gibi API bitiş GET yöntemi ile göndermek dosyayı ..

' 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}}