Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 34

0
votes
answers
3 views
+10

在一個單獨的線程中的pycurl子進程

0

我需要幫助來從pycurl獲取輸出,我試圖在子進程中運行。我試圖把這個輸出放入一個隊列中,而不是把這個隊列放在另一個類中。在一個單獨的線程中的pycurl子進程

不幸的是,現在我有沒有輸出=(

import threading 
import random 
import time 
import Queue 
import urllib2 
import sys 
import simplejson, pycurl 
import sys, signal 

queue = Queue.Queue() 
keep_running = True 
user = "username" 
pswd = "pass" 

class MyThread(threading.Thread): 
    def __init__(self, queue): 
     threading.Thread.__init__(self) 
     self.queue = queue 

    def run(self): 
     curl_path = '/usr/bin/curl' 
     curl_list = [curl_path] 
     args = ('curl', 'https://stream.twitter.com/1/statuses/filter.json?track=java', '-u', 'user:pass') 
     for arg in args: 
      curl_list.append(arg) 
      child = subprocess.Popen(
         curl_list, 
         shell=False, 
         #stdout=subprocess.PIPE) 
         stderr=subprocess.PIPE) 
      try: 
       out += child.communicate() 
       c_out.write(out) 
       self.queue.put(c_out) 
       self.queue.task_done() 
      except KeyboardInterrupt: 
       child.kill() 


class Starter(): 
    def __init__(self): 
     self.queue = queue 
     t = MyThread(self.queue) 
     t.daemon=True 
     t.start() 
     self.next() 

    def next(self): 
     while True: 
      time.sleep(0.5) 
      if not self.queue.empty(): 
       line = self.queue.get(timeout=0.2) 
       print '

IM IN STARTER %s' % line 
      else: 
       print 'waiting for queue' 

def main(): 
    try: 
     Starter()  
    except KeyboardInterrupt, e: 
     print 'Stopping' 
     raise 

main() 
沙发
0
1

你似乎混淆你的參數子過程很有點...的的args列表應該是所有不同的部分命令的那你會使用捲曲,你正在把它們都聚集在這是不會與子工作的方式。你應該curl_list看起來更像這個...

curl_path = '/usr/bin/curl' 
curl_list = [curl_path, 'https://stream.twitter.com/1/statuses/filter.json?track=java', '-u', 'user:pass'] 

您同時還使用了不必要的此刻......你不想在這個列表中循環你只是想將它傳遞給子進程,這將適當地處理它。而且你也希望stdout從中得到結果,所以你也需要在其中包含管道。

即,整個事情應該是...

def run(self): 
    curl_path = '/usr/bin/curl' 
    curl_list = [curl_path, 'https://stream.twitter.com/1/statuses/filter.json?track=java', '-u', 'user:pass'] 

    child = subprocess.Popen(curl_list, 
          shell=False, 
          stdout=subprocess.PIPE, 
          stderr=subprocess.PIPE) 
    try: 
     out += child.communicate()[0] 
     c_out.write(out) 
     self.queue.put(c_out) 
     self.queue.task_done() 
     except KeyboardInterrupt: 
      child.kill() 

可能要考慮再看看subprocess documentation更好地理解上述的變化。我實際上並沒有通過口譯員來解決這個問題,所以它可能並不完美,但應該讓你朝着正確的方向前進......祝你好運!

+0

非常感謝您的回覆,您可以幫我多做一件事:我忘記了包含該變量'c_out'被定義爲'c_out = cStringIO.StringIO()',但是當我運行您的代碼時,我仍然在隊列中沒有任何東西 – Vor 2013-04-25 14:38:40

+0

你爲什麼使用cStringIo?我不確定那是什麼......你應該能夠將字符串添加到隊列中。 – EEP 2013-04-25 15:14:59

+0

我嘗試了你沒有使用cString的建議,只是把'out'放入隊列中,但後來當我檢查隊列時,它沒有向我顯示任何東西。我的意思是它表明它是空的 – Vor 2013-04-25 15:18:38

0
votes
answers
3 views
+10

捲曲是否有分頁限制

-1

捲曲是否存在分頁限制?捲曲是否有分頁限制

我下面執行MAC終端上的結果集始終只顯示25個項目,其中如通過郵遞員,我能得到一套完整的

curl -X GET --user USER:PASSWORD https://example.com/rest/api/1.0/foldername?size=677&limit=1000 

我不是捲曲或bash

知道一
+0

解決了它,以及它如何在curl中給出查詢(很好的學習) 'curl -X GET -G -u USER https://example.com/rest/api/1.0/foldername -d'size = 677'-d'limit = 1000'' –

+0

實際上,這不是關於捲髮或郵遞員,而是您正在使用的API提供的分頁系統。 –

沙发
0
0

不,沒有。也許從理論上講,下載大約18.4艾字節(2^64字節)後可能會出現一些64位整數溢出錯誤,但在碰到curl的任何下載大小限制之前,您將碰到其他問題。 (儘管你可以用--max-filesize參數來設置你自己的限制,但是該參數是不可靠的)

你看到的差異有另一個原因。例如,在這裏捲曲,你在發送url中的limit=1000,也許當你使用郵遞員,你發送它在POST身體而不是URL,沒有意識到它?這將解釋它。從網址中刪除?size=677&limit=1000並添加-d size=677 -d limit=1000有所作爲?現在你在移動捲曲從URL參數後體(使用application/x-www-form-urlencoded編碼) - 其他編碼包括應用/ JSON和多/ form-data編碼,如果我是你,我會仔細檢查我的郵遞員要求..

0
votes
answers
3 views
+10

Laravel:多捲圖像上傳問題(在REST API中)捲曲和郵差

0

上傳多個圖像在postman/curl的larvel rest api中無法正常工作。 它只插入一個圖像。Laravel:多捲圖像上傳問題(在REST API中)捲曲和郵差

在視圖中使用larvel上傳表單根本沒有問題,它工作正常。

<input type="file" name="image[]" multiple /> 

我在嘗試的是上傳多個圖像郵遞員和curl在Laravel休息api。

這是控制文件

public function uploadimages(Request $request){ 
      $files = $request->allFiles('image');  
      $count = 0;  
      foreach ($files as $file) { 
       $file->store('public/uploads'); 
       $count++; 
       //this technic also not work 
       /* $name= $file->getClientOriginalName(); 
        $file->move('public/uploads', $name); 
        $images[]=$name;*/ 
      } 
      //$count return only 1(it only upload one file) 
      return response()->json($count, 201); 
    } 

這是我的curl命令

curl -X POST http://localhost:8000/api/uploadimages -H "Content-Type: multipart/form-data" -F "[email protected]/C:xampphtdocs2.jpg" -F "[email protected]/C:xampphtdocs1.jpg" 

這個命令插入只有一個文件。

我也把這個和嘗試「image [] = @/C: xampp htdocs 1.jpg」並得到錯誤。

curl -X POST http://localhost:8000/api/uploadimages -H "Content-Type: multipart/form-data" -F "image[][email protected]/C:xampphtdocs2.jpg" -F "image[][email protected]/C:xampphtdocs1.jpg" 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0 
curl: (26) couldn't open file "/C:xampphtdocs2.jpg" 

在郵遞員應用程序中也只上傳一個文件。 我仔細檢查郵遞員設置從其他問題上傳文件。我認爲設置是可以的。

我無法找到上傳Larvel Rest api中的多個圖像。

有什麼問題,請有人建議我,並解釋我的問題。

沙发
0
1

我認爲你的問題是你試圖用相同的密鑰發送2個文件。在這種情況下爲image。嘗試更改第二個文件密鑰到其他東西像image2所以它會像

curl -X POST http://localhost:8000/api/uploadimages -H "Content-Type: multipart/form-data" -F "[email protected]/C:xampphtdocs2.jpg" -F "[email protected]/C:xampphtdocs1.jpg" 
+0

謝謝@avpav,它的工作。我被困了很多天。你幫我。非常感謝。 –

+0

有一點,你有什麼想法建議,爲什麼它不適用於postman應用程序? –

+0

我不知道。你能提供一個截圖嗎? – avpav

0
votes
answers
3 views
+10

cUrl vs Invoke-WebRequest

1

有人可以向我解釋爲什麼cUrl(真正的cUrl)有效,但Invoke-WebRequest不是?同一臺機器,相同的變量。對我來說,看起來他們都應該做同樣的事情,把文件上傳到jfrog Artifactory。cUrl vs Invoke-WebRequest

$headers = @{ 
    'X-JFrog-Art-Api' = $apiKey 
    "Content-Type" = "application/json" 
    "Accept" = "application/json" 
} 

Invoke-WebRequest -InFile $file -Method Put -Uri "$ARTIFACTORY_HOST/third-party/test/readme.md" -Headers $headers -Verbose 

此PowerShell不起作用。

curl -T readme.md "${ARTIFACTORY_HOST}/third-party/test/readme.md "  
-H "X-JFrog-Art-Api: ${apiKey}"  
-H "Content-Type: application/json"  
-H "Accept: application/json" 

cUrl有效。

PowerShell的失敗,

Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send. 
At line:1 char:1 
+ Invoke-WebRequest -InFile $file -Method Put -Uri "https:// ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException 
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 
+0

反斜槓是他失敗的方式,它不在PowerShell上,但在cUrl上。 你在Artifactory的日誌中看到什麼?你有沒有在Artifactory的日誌中看到什麼,或者reqeust根本沒有達到它? – Ariel

+0

@TessellatingHeckler as Ariel通過閱讀我的帖子正確識別反斜槓是爲bash。我根本不在PowerShell中使用反引號。 我自己找到答案。 PowerShell協商TLS1.0。 –

沙发
0
1

原來PowerShell的默認錯誤TLS版本並需要明確告知使用1.2

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

放進了Invoke-WebRequest和所有的前很好。

0
votes
answers
3 views
+10

如何在cURL中發佈JSON數據和請求令牌(在標題中)php

1

我想發送登錄憑證和一個PIN碼作爲JSON數據和請求令牌作爲我的http頭。如何在cURL中發佈JSON數據和請求令牌(在標題中)php

最初是這樣的,

{ 
    "Username":"admin", 
    "Password":"root123", 
    "PinCode」 : "hello321" 
} 

,我需要我的張貼要求頭令牌爲好。

,如果該請求是好的,我應該得到JSON響應如下,

{ 
      "Title": "Mr.", 
      "Name": "Pushkov", 
      "Age": "18" 

} 

我試圖做到這一點在PHP捲曲。以下是我的控制器代碼。

我試圖將我的請求令牌保存到一個變量,並將其傳遞到標題中,並將用戶名,密碼和pinnumber作爲JSON數據發送。如果登錄成功,則顯示用戶信息。但我正努力從這裏前進。我怎樣才能做到這一點?

public function send_data() { 

$url='http://samplesite.azurewebsites.net/api/member/loginmember'; 

$ch = curl_init('http://localhost/main'); 


$data = array("Username" =>$this->input->post('un'), "Password" =>$this->input->post('pw'), "PinCode" =>$this->input->post('PinCode'));                  
$data_string = json_encode($data); 


//echo $data_string; 

// Disable SSL verification 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
// Will return the response, if false it print the response 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($data_string))                  
); 
// Set the url 
curl_setopt($ch, CURLOPT_URL,$url); 
// Execute 
$result=curl_exec($ch); 


//var_dump(json_decode($result, true)); 
$data2=json_decode($result, true); 
$ref_id = ((is_array($data2["UserCode"]) ? implode(", ", $data2["PinCode"]) : $data2["RequestToken"])); // array to string 
$acc_t = $data2["RequestToken"]; 
$uun = $data2["UserCode"]; 

//echo $acc_t; 


// Closing 
curl_close($ch); 
//print $result ; 
} 
沙发
0
0

在你上面的代碼,你設置的URL curl_init(),你也通過另外一臺CURLOPT_URL選項。你不能在一個cURL請求中這樣做。

如果您使用OAuth 2.0,則可以將訪問令牌設置爲CURLOPT_XOAUTH2_BEARER選項。

更多信息請參考PHP manual on cURL Functions

0
votes
answers
2 views
+10

遠程請求不能正常工作

0

我寫一個自定義函數post_updated行動在WordPress象下面這樣:遠程請求不能正常工作

function post_update_trigger($post_ID, $post_after, $post_before){ 

    if($post_after->post_status == "publish" || $post_after->post_status == "trash"){ 

     $url="https://myremoteurl.com/feed/blogAPI"; 

     $response = wp_remote_post($url,array(
         'method' => 'POST', 
         'timeout' => 45, 
         'redirection' => 5, 
         'httpversion' => '1.0', 
         'blocking' => true, 
         'headers' => array(), 
         'body' => $postFields, 
         'cookies' => array() 
         )); 

      if (is_wp_error($response)) { 
        $error_message = $response->get_error_message(); 
        echo "Something went wrong: $error_message";exit; 
      } else { 
        echo 'Response:<pre>'; 
        print_r($response);exit; 
        echo '</pre>'; 
    } 

    } 

} 

add_action('post_updated', 'post_update_trigger', 10, 3); 

我試圖從郵遞員發佈請求。一切似乎都很好,並且工作。除了wp_remote_post,我也試過CURL

我做錯了什麼。

看到我的帖子的人的要求:

postman request image

PS:博客是存在於項目的根的子文件。這是造成這個問題嗎?

+3

您是否檢查過'wp_remote_post()'函數實際返回的內容?如果出現問題,它應該返回一個'WP_Error'對象,這可能會給你更多的見解。 –

+0

是的。它給我404錯誤。 「請求的URL/feed/blogAPI在此服務器上未找到。」 – saikiran

+1

您確定URL中沒有拼寫錯誤嗎?正確的外殼? –

沙发
0
-1

該錯誤是由於請求與遠程的源相同,即我的控制器在https://dev.kidengage.com/feed/blogAPI

但我的wordpress是在https://dev.kidengage.com/blog根目錄的子文件夾中。

所以使用wp_remote_post將導致時髦的響應。

我結束了使用像下面直接從wordpress存儲數組到我的根使用的另一個數據庫。

 global $wpdb; 

     $newdb = new wpdb('username','password','dagtabasename','localhost'); 
     $newdb->show_errors(); 

     $postExist= $newdb->get_row("select * from blogMaster where postID=$post_ID"); 

     if(empty($postExist)){ 

      $insert=array(
       "postID" => $post_ID, 
       "postTitle" => $post_after->post_title, 
       "postContent" => $post_after->post_content , 
       "postExcerpt" => $post_after->post_excerpt, 
       "postType" => $post_after->post_type, 
       "postGuid" => $post_after->guid , 
       "postPermLink" => $permLink, 
       "postThumb" => $thumbLarge, 
       "postAuthorName" => $authorName, 
       "postAuthorPic" => $authorURL , 
       "postStatus" => $post_after->post_status, 
       "postDate" => $post_after->post_date, 
       "postModified" => $post_after->post_modified 
      ); 


      $newdb->insert("blogMaster",$insert);  

     } 
+0

downvoter請注意解釋爲何投下票? – saikiran

0
votes
answers
2 views
+10

提取捲曲API在Android中Java的

0

我嘗試使用以下cURL命令提取從EatStreet API數據:提取捲曲API在Android中Java的

捲曲-X GET -H 'X-訪問令牌:API_EXPLORER_AUTH_KEY' 「https://api.eatstreet.com/publicapi/v1/restaurant/search?latitude=40.4310&longitude=-86.9149&method=both

我寫了到目前爲止的代碼如下:

import org.apache.http.auth.UsernamePasswordCredentials; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.auth.BasicScheme; 
import org.apache.http.impl.client.DefaultHttpClient; 

import java.io.BufferedReader; 
import java.lang.StringBuffer; 
import java.net.URI; 
import java.net.URISyntaxException; 


public class Main { 

    public static void main(String[] args) { 
     StringBuffer stringBuffer = new StringBuffer(""); 
     BufferedReader bufferedReader = null; 
     blah(); 
    } 

    private static void blah() { 
     try { 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet(); 

      URI uri = new URI("https://api.eatstreet.com/publicapi/v1/restaurant/search?latitude=40.4310&longitude=-86.9149&method=both"); 
      httpGet.setURI(uri); 
      addHeader(httpGet); 
     } 
     catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void addHeader(HttpGet httpGet) { 
     httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("X-Access-Token", 
         "__API_EXPLORER_AUTH_KEY__"), null)); 
    } 
} 

此代碼是不是在所有我相信任何輸出是由於WR ong身份驗證。我需要使用Android上面提到的cURL命令來獲取數據。

輸出應該類似於如下(JSON格式):

{ 
    "address": { 
    "apiKey": null, 
    "streetAddress": null, 
    "latitude": 40.431, 
    "longitude": -86.9149, 
    "city": null, 
    "state": null, 
    "zip": null, 
    "aptNumber": null 
    }, 
    "restaurants": [ 
    { 
     "apiKey": "90fd4587554469b1144247b91fbcb2f349e8e58504b5a530", 
     "deliveryMin": 7, 
     "deliveryPrice": 3, 
     "logoUrl": "https://eatstreet-static.s3.amazonaws.com/assets/images/restaurant_logos/egyptian-cafe-and-hooka-bar-29289_1426541949444.png", 
     "name": "Egyptian Cafe and Hooka Bar", 
     "streetAddress": "130 Northwestern Avenue", 
     "city": "West Lafayette", 
     "state": "IN", 
     "zip": "47906", 
     "foodTypes": [ 
     "Subs & Sandwiches", 
     "Middle Eastern Food", 
     "Mediterranean Food", 
     "Hookah Bars", 
     "Healthy Food" 
     ], 
     . 
     . 
     . 
     { 
     "apiKey": "90fd4587554469b1144247b91fbcb2f3720a4edae037dd96", 
     "deliveryMin": 7, 
     "deliveryPrice": 3, 
     "logoUrl": "https://eatstreet-static.s3.amazonaws.com/assets/images/restaurant_logos/vienna-coffee-house-and-bakery-29290_1426542017375.png", 
     "name": "Vienna Coffee House & Bakery", 
     "streetAddress": "208 South Street", 
     "city": "West Lafayette", 
     "state": "IN", 
     "zip": "47906", 
     "foodTypes": [ 
     "Coffee & Tea", 
     "Bakery" 
     ], 
     "phone": "(765) 743-4446", 
     "latitude": 40.4239543, 
     "longitude": -86.9079021, 
     "minFreeDelivery": 0, 
     "taxRate": 0.07, 
     "acceptsCash": false, 
     "acceptsCard": true, 
     "offersPickup": true, 
     "offersDelivery": true, 
     "isTestRestaurant": false, 
     "minWaitTime": 45, 
     "maxWaitTime": 60, 
     "open": true, 
     "url": "https://eatstreet.com/lafayette-in/restaurants/vienna-coffee-house-and-bakery", 
     "hours": { 
     "Sunday": [ 
      "6:00 PM - 12:00 AM" 
     ], 
     "Wednesday": [ 
      "6:00 PM - 12:00 AM" 
     ], 
     "Tuesday": [ 
      "6:00 PM - 12:00 AM" 
     ] 
     }, 
     "timezone": "US/Eastern" 
    } 
    ] 
} 
沙发
0
0

addHeader(httpGet)後,你必須用實際執行的GET操作先前定義的httpClient

HttpResponse response = httpclient.execute(httpGet); 
response.getEntity().getContent(); // do something with the response 
// an example of continuing what you were trying to do 
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
     response.getEntity().getContent())); 

而且,您的addHeader(httpGet)需要更改爲此,以傳遞API密鑰作爲標題,而不是UsernamePasswordCredentials

private static void addHeader(HttpGet httpGet) { 
     httpGet.addHeader("X-Access-Token", "__API_EXPLORER_AUTH_KEY__"); 
} 
0
votes
answers
2 views
+10

有人可以幫我把這個Curl請求轉換成node.js嗎?

0

我正在使用Webhooks,並試圖從我的node.js代碼運行一個Curl請求。我使用npm 請求包來做到這一點。我無法找到正確的方式將Curl請求轉換爲將發送請求的應用程序中的代碼。有人可以幫我把這個Curl請求轉換成node.js嗎?

這是捲曲的請求:

curl -X POST https://tartan.plaid.com/connect  
    -d client_id=test_id  
    -d secret=test_secret  
    -d username=plaid_test  
    -d password=plaid_good  
    -d type=wells  
    -d options='{ 
     "webhook":"http://requestb.in/", 
     "login_only":true }' 

這工作得很好,當我在我的終端上運行,所以我知道憑據工作,它在談論到服務器。

這裏是我的Node.js代碼:

var request = require('request'); 

var opt = { 
    url: 'https://tartan.plaid.com/connect', 
    data: { 
    'client_id': 'test_id', 
    'secret': 'test_secret', 
    'username': 'plaid_test', 
    'password': 'plaid_good', 
    'type': 'wells', 
    'webhook': 'http://requestb.in/', 
    'login_only': true 
    } 
}; 

request(opt, function (error, response, body) { 
    console.log(body) 
}); 

應該返回一個項目但所有我得到的是:

{ 
    "code": 1100, 
    "message": "client_id missing", 
    "resolve": "Include your Client ID so we know who you are." 
} 

所有憑證從格子網站,他們在我的終端工作就好了,所以我認爲這只是我寫我的Node.js代碼導致問題的方式。

如果任何人都可以幫助我找到正確的方式來編寫節點代碼,以便它能夠做到curl請求在終端中所做的事情,那將是值得讚賞的!謝謝!

沙发
0
1

您可能希望在選項中使用form:而不是data:。希望這會做到這一點。

板凳
0
1

request的默認方法是GET。你想要一個POST,所以你必須將它設置爲一個參數。您還必須根據documentation將數據作爲JSON發送。所以我相信這應該工作:

var opt = { 
    url: 'https://tartan.plaid.com/connect', 
    method: "POST", 
    json: { 
    'client_id': 'test_id', 
    'secret': 'test_secret', 
    'username': 'plaid_test', 
    'password': 'plaid_good', 
    'type': 'wells', 
    'webhook': 'http://requestb.in/', 
    'login_only': true 
    } 
}; 
地板
0
1

請參閱explainshell: curl -X -d爲解釋你的curl命令實際上做了什麼。

  • 您發送POST要求
  • 您發送郵件使用使用內容類型的數據應用程序/ x-WWW窗體-urlencoded

要複製與request你必須對其進行相應配置:

var opt = { 
    url: 'https://tartan.plaid.com/connect', 
    form: { 
    // ... 
    } 
}; 

request.post(opt, function (error, response, body) { 
    console.log(body) 
}); 

請參閱application/x-www-form-urlencoded獲取更多示例。

0
votes
answers
2 views
+10

curl POST和GET響應

1

我正在嘗試編寫一個簡單的單行程序,它將採用.crt並將其作爲SSLShopper.com傳遞給CRT檢查程序。我可以發佈這些數據,但是我得到的所有信息都是標題和HTTP響應。他們網站上的表單看起來很簡單,只是一個返回結果的AJAX調用。這是我到目前爲止:curl POST和GET響應

curl -L -i -X POST -k "https://www.sslshopper.com/assets/snippets/sslshopper/ajax/ajax_decode.php" --data-binary @test.crt 

有沒有辦法同時POST和GET?

+0

HTTP是基於「狀態」。您發出請求或發帖並獲取回覆。一心一意。這就是它的工作原理。 – Rob

沙发
0
0

看來你需要用下面的參數發送的數據表單URL編碼格式:

  • cert_text={CERT_CONTENT}
  • decode_type=certificate

您還需要X-Requested-With: XMLHttpRequest & Connection: keep-alive標題:

cert_content=$(cat test.crt) 
curl 'https://www.sslshopper.com/assets/snippets/sslshopper/ajax/ajax_decode.php'  
    -H 'X-Requested-With: XMLHttpRequest'  
    -H 'Connection: keep-alive'  
    --data-urlencode "cert_text=$cert_content"  
    --data-urlencode "decode_type=certificate" 

但對於這個任務,你並不需要調用一些端點檢查證書,因爲它在https://www.sslshopper.com/certificate-decoder.html自行指定,也可以直接使用??:

openssl x509 -in test.crt -noout -subject -enddate -startdate -issuer -serial 
+0

謝謝,你的捲曲方法奏效。你說得對,我可以使用cli版本,但它比我想要的要多得多。我正在比較這兩個版本,看看哪一個更容易sed提取我需要的信息。 –

+0

@MattMorrow如果你只想要你可以使用的主題:'openssl x509 -in test.crt -noout -subject' –

+0

@MattMorrow我已經用'openssl' cmd更新了請求與http請求相同的數據,只是選擇你需要的領域 –

0
votes
answers
2 views
+10

如何將curl寫入php?

0

我有這下面的PHP腳本。我想用curl添加調用函數。 如何在我的下面的腳本上寫入捲曲?如何將curl寫入php?

我是編程新手。我仍然很好地學習它。請檢查我的代碼並嘗試幫助我添加捲曲。

我的腳本沒有錯誤。只是我想添加php函數替換爲curl函數。

我希望如此,你明白。對不起,我的英語不好。感謝

我的代碼是在這裏:

$url = 'https://web.facebook.com/'.$pageid.'/videos/'.$id.'/'; 

$context = [ 
    'http' => [ 
     'method' => 'GET', 
     'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.47 Safari/537.36", 
    ], 
]; 
$context = stream_context_create($context); 
$data = file_get_contents($url, false, $context); 

function cleanStr($str) 
{ 
    return html_entity_decode(strip_tags($str), ENT_QUOTES, 'UTF-8'); 
} 

function hd_finallink($curl_content) 
{ 

    $regex = '/hd_src_no_ratelimit:"([^"]+)"/'; 
    if (preg_match($regex, $curl_content, $match)) { 
     return $match[1]; 

    } else {return;} 
} 

function sd_finallink($curl_content) 
{ 

    $regex = '/sd_src_no_ratelimit:"([^"]+)"/'; 
    if (preg_match($regex, $curl_content, $match1)) { 
     return $match1[1]; 

    } else {return;} 
} 


$hdlink = hd_finallink($data); 
$sdlink = sd_finallink($data); 

if ($sdlink || $hdlink) { 

echo '<a href="'.$hdlink.'" download="hd.mp4" class="link">HD Download </a>'; 
echo '<a href="'.$sdlink.'" download="sd.mp4" class="link">SD Download </a>'; 

} else { 

echo 'Download not showing - Please Reload This Page'; 

} 
沙发
0
1

之前,我們可以用捲曲的要求做任何事情,我們需要首先實例捲曲的一個實例 - 我們可以通過調用函數做到這一點curl_init();

對於GET請求示例代碼:用於POST

// Get cURL resource 
$curl = curl_init(); 
// Set some options - we are passing in a useragent too here 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => 'http://testcURL.com/?item1=value&item2=value2', 
    CURLOPT_USERAGENT => 'Codular Sample cURL Request' 
)); 
// Send the request & save response to $resp 
$resp = curl_exec($curl); 
// Close request to clear up some resources 
curl_close($curl); 

示例代碼熱曲斯:

// Get cURL resource 
$curl = curl_init(); 
// Set some options - we are passing in a useragent too here 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => 'http://testcURL.com', 
    CURLOPT_USERAGENT => 'Codular Sample cURL Request', 
    CURLOPT_POST => 1, 
    CURLOPT_POSTFIELDS => array(
     item1 => 'value', 
     item2 => 'value2' 
    ) 
)); 
// Send the request & save response to $resp 
$resp = curl_exec($curl); 
// Close request to clear up some resources 
curl_close($curl); 

See this link

+0

怎麼我把它替換到我的PHP。請用完整的代碼更新您的代碼。謝謝 –

+0

'$ resp = shell_exec('curl -s -d item1 = value -d item2 = value2 http://testcURL.com');'' – hanshenrik