trelamenos333 Δημοσ. 18 Νοεμβρίου 2015 Δημοσ. 18 Νοεμβρίου 2015 Καλησπέρα παιδία,Ξεκίνησα να χρησιμοποιώ curl για να http request για ενα application. Αυτό που δεν μπορώ να καταλάβω είναι το εξής:1) Στην σελίδα που δηλώνουμε στο url πως μπορώ να διαχειριτώ αυτά που έχω κάνει Post. Πως μπορώ δηλαδή κάπου να καλέσω το item1 => 'value', item2 => 'value2'είτε για εγγραφή σε μια βάση είτε για εκτέλεση κάποιας λειτουργίας.2) Αν στο server side script υπάρχει η δυνατότητα για κάποιο redirection αντί να παραμείνω στην σελίδα που ήταν το curl// Get cURL resource$curl = curl_init();// Set some options - we are passing in a useragent too herecurl_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 resourcescurl_close($curl);Ευχαριστώ πολύ εκ των προτέρων
lion2486 Δημοσ. 18 Νοεμβρίου 2015 Δημοσ. 18 Νοεμβρίου 2015 Όπως βλέπω δουλεύεις σε php. Στον destination-server Μπορείς να πάρεις τις μεταβληπές που στέλνεις από το array $_POST (πχ $_POST['item1'] κτλ..) Απο τη στιγμή που κλείνεις την σύνδεση και δεν χρησιμοποιείς την απάντηση που σου επέστρεψε ο server δεν κάνει τίποτα άλλο το πρόγραμμά σου, ανεξάρτητα τι κάνει ο destination-server σε ένα άλλο πρόγραμμα-πελάτη (πχ έναν browser).
trelamenos333 Δημοσ. 18 Νοεμβρίου 2015 Μέλος Δημοσ. 18 Νοεμβρίου 2015 Ακριβώς είναι σε php. Ωστόσο στο server side script κάνωντας χρήση του $_POST δεν γίνεται τίποτα απολύτως. Είτε αυτό είναι εγγραφή σε βάση είτε απλά ανάθεση μιας τιμής σε ένα session. Θα μπορούσες να μου πεις πως θα φέρω την τιμή που επέστρεψε ο server στο αρχικό script; Ευχαριστώ πολύ <?php session_start();if(isset($_POST['item1'],$_POST['item2'])){ $db = new mysqli('connection info'); $item1 = $db->real_escape_string($_POST['item1']); $item2 = $db->real_escape_string($_POST['item2']); $query = "insert into users set username='$item1 ,$item2'"; $db->query($query)}?>
lion2486 Δημοσ. 18 Νοεμβρίου 2015 Δημοσ. 18 Νοεμβρίου 2015 Έχεις δυνατότητα εκτέλεσης ncat στον server σου να δείς τι ακριβώς λαμβάνει; Είναι κάποιο shared hosting με virtual hosts? Μήπως πρέπει να προσθέσεις την παράμετρο HOST: στις κεφαλίδες; Επίσης μπορείς να τυπώσεις με μια print_r() τα αποτελέσματα τις curl_exec μήπως σου δώσει κάποια πληροφορία.
ALLisCHAOS Δημοσ. 20 Νοεμβρίου 2015 Δημοσ. 20 Νοεμβρίου 2015 Μα αφού δεν έχεις πουθενά στον κώδικα σου να επιστρέφει ο server μια απάντηση, γι αυτό δεν πέρνεις απάντηση.Στο κώδικα του πρώτου σου post στέλνεις το request στο server και στο 2ο διάβαζει ο server το request. Οπότε πρέπει αρχικά να βάλεις ο server να επιστρέφει κάτι (συνήθως κάποιο json) αφού τελειώσεις το query πχ: $response = array(); $response['item1'] = "Value of item1"; $response['item2'] = "Value of item2"; //encode response into json $json_response = json_encode($response); echo $json_response; Και τώρα στον client αφού διβάζεις την απάντηση με το: //get response $resp = curl_exec($curl); //decode json $result = json_decode($resp); //get the value of item1 from $result $item1_resp = $result->item1; //get the value of item2 from $result $item2_resp = $result->item2; 1
anvasila Δημοσ. 27 Νοεμβρίου 2015 Δημοσ. 27 Νοεμβρίου 2015 Αν κατάλαβα καλά κάτι τέτοιο χρειάζεσε: $url= "YOUR_URL"; $ch1 = curl_init(); $post_value = "value1=VALUE1&value2=VALUE2"; curl_setopt($ch1, CURLOPT_URL, $url); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch1, CURLOPT_POST, 1); curl_setopt($ch1, CURLOPT_POSTFIELDS,$post_value); curl_setopt($ch1, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); $output = curl_exec($ch1); $info = curl_getinfo($ch1); curl_close($ch1); //To $output περιέχει πλέον τα δεδομένα σε json υποθέτω. Τα κανεις decode και είσαι άρχοντας $result = json_decode($output); echo "<pre>"; print_r($output); echo "</pre>"; Υ.Γ. Για να βγάζεις άκρη και να τεστάρεις API call πιο εύκολα θα σου πρότεινα να δοκιμάζεις τις κλήσεις σου στο hurl.it για παράδειγμα πριν αρχίσεις να γράφεις curl calls, ώστε να βλέπεις αν το API αρχικά λειτουργεί σωστά. Και αφού λειτουργεί σωστά να πιανεις την άλλη πλευρά της επικοινωνίας. Με λίγα λόγια σπάσε το πρόβλημά σου σε κομμάτια και λύνε το ένα ένα. Διαίρει και Βασίλευε, όπως έλεγε και ο παππούς μου :-P
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα