2016-05-05 71 views
0

我試圖做從CasperJS POST請求複製POST請求:不能在CasperJS

for(var i in phantom.cookies) 
    cookie += phantom.cookies[i].name + '=' + phantom.cookies[i].value + ';'; 

casper.thenOpen(url, { 
    method: 'post', 
    data: { 
     // some form-data 
    }, 
    headers: { 
     'Content-Type': 'multipart/form-data', 
     'Cookie': cookie 
    } 
}, function(response) { 
    if(response.status == 200) { 
     require('utils').dump(this.page.content); 
    } 
}); 

當我執行請求別的地方,我得到了適當的響應,但由於某種原因,我不能複製CasperJS上的輸出。這裏是一個沒有工作的捲曲請求的例子:

curl -X POST -H "Cookie: cookie" -H "Content-Type: multipart/form-data" -F "field=field" "url" 
+0

是您的服務器期待什麼樣的數據?你需要設置'內容類型'標題嗎? – matmo

+0

我補充說,但它仍然無法正常工作。我還添加了一個可用於比較的cURL。 – wizplum

回答

0

我的情況是CasperJS(1.1.x版本的)測試我的REST API。 API寫入節點。在一個特定的資源中,我正在使用formiddable處理表單。當我在Casper中設置content-type:multipart/form-data時,該formiddable庫抱怨出現以下錯誤:錯誤的內容類型標題,沒有多部分邊界

我找不到解決方案。相反,我結束了在卡斯帕這樣做:

casper.open(<url>, { 
     method: 'POST', 
     data: "\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nxxx\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"upload\"\r\n\r\nhttps:\/\/url\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", 
     headers: { 
      'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' 
     } 
    }) 

基本上我格式化身體適當的格式和這個工作