אין מענה בשרת הapi, כתוב בc#
-
@מוטלה
כן פשוט שיהיה אפשרות שמקיש מערכת ומשמיע ומבקש אישור ואח"כ סיסמא ומשמיע ומבקש אישור
התכוונת למחלקה הזאת?$SetSite = $_GET["SetSite"]; if ($SetSite == NULL) { define("URL", "https://www.call2all.co.il/ym/api/"); } if ($SetSite == "private") { define("URL", "https://www.private.call2all.co.il/ym/api/"); } class BodyPost { // part "multipart/form-data" public static function PartPost($name, $val) { $body = 'Content-Disposition: form-data; name="' . $name . '"'; // check instance of oFile if($val instanceof oFile) { $file = $val->Name(); $mime = $val->Mime(); $cont = $val->Content(); $body .= '; filename="' . $file . '"' . "\r\n"; $body .= 'Content-Type: ' . $mime ."\r\n\r\n"; $body .= $cont."\r\n"; } else $body .= "\r\n\r\n".$val."\r\n"; return $body; } public static function Get(array $post, $delimiter = '-------------0123456789') { if(is_array($post) && !empty($post)) { $bool = true; //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; }; if($bool) { $ret = ''; foreach($post as $name=>$val) $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val); $ret .= "--" . $delimiter . "--\r\n"; } else $ret = http_build_query($post); } else throw new \Exception('Error input param!'); return $ret; } } class oFile { private $name; private $mime; private $content; public function __construct($name, $mime=null, $content=null) { if(is_null($content)) { $info = pathinfo($name); // check is exist and readable file if(!empty($info['basename']) && is_readable($name)) { $this->name = $info['basename']; // get MIME $this->mime = mime_content_type($name); // load file $content = file_get_contents($name); if($content!==false) { $this->content = $content; } else { throw new Exception('Don`t get content - "'.$name.'"'); } } else { throw new Exception('Error param'); } } else { $this->name = $name; if(is_null($mime)) $mime = mime_content_type($name); $this->mime = $mime; $this->content = $content; }; } public function Name() { return $this->name; } public function Mime() { return $this->mime; } public function Content() { return $this->content; } } class connecting_to_yemot_api { public $token; const URL = URL; public function __construct($user_name, $password) { $body = array('username' => $user_name, 'password' => $password); $body = http_build_query($body); $opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded", 'content' => $body, 'follow_location' => false) ); $context = stream_context_create($opts); $url = self::URL.'Login'; $result = file_get_contents($url, FALSE, $context); $result = json_decode($result); if($result -> responseStatus == 'OK') { $this -> token = $result -> token; return TRUE; } else { throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים'); } } public function __destruct() { $this -> connecting('Logout'); } public function connecting($action, $body = array()) { $delimiter = '----'.uniqid(); $body['token'] = $this -> token; $body = BodyPost::Get($body, $delimiter); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter, 'content' => $body, 'follow_location' => false ) ); $context = stream_context_create($opts); $url = self::URL.$action; $result = file_get_contents($url, FALSE, $context); $headers = $this -> parseHeaders($http_response_header); if($headers['Content-Type'][0] == 'application/json') { return json_decode($result); } else { return $result; } } private function parseHeaders($headers) { // פונקציה שמקבלת מערך של שורות הכותרות // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד // מערך הכותרות $head = array(); foreach( $headers as $k=>$v ) { $t = explode( ':', $v, 2 ); if( isset( $t[1] ) ) { if($t[0] == 'Set-Cookie') { $CookiesArr = array(); $cookies = explode( ';', $t[1]); foreach($cookies as $cookie) { $c = explode( '=', $cookie); if( isset( $c[1] ) ) { $CookiesArr[ trim($c[0]) ] = trim( $c[1] ); } else { $CookiesArr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $CookiesArr; } elseif($t[0] == 'Content-Type') { $arr = array(); $children = explode( ';', $t[1]); foreach($children as $child) { $c = explode( '=', $child); if( isset( $c[1] ) ) { $arr[ trim($c[0]) ] = trim( $c[1] ); } else { $arr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $arr; } else { $head[ trim($t[0]) ] = trim( $t[1] ); } } else { $head[] = $v; if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) ) { $head['reponse_code'] = intval($out[1]); } } } return $head; } }
זה נראה ארוך מאוד מאוד!!!
-
@קו-מהיר כן, אבל בשביל זה לא צריך את המחלקה:
<?php $ApiDID = $_GET['ApiDID']; $password = $_GET['password']; if ($ApiDID == NULL){echo "read=t-אנא הקש את מספר המערכת שלך ובסיום הקש סולמית=ApiDID,no,10,9,7,No";exit();} if ($password == NULL){echo "read=t-נא הקש את סיסמת המערכת ובסיום הקש סולמית=password,no,,,7,No";exit();} ?>
בשלוחה אתה צריך להוסיף גם את זה
api_did_send=no
-
@מוטלה
ומה להגדיר אח"כ? אני רוצה שיהיה לו תפריט מסוים לדוג' האם להגדיר הגדרה מסוימת או לא וחוץ מזה, מה זה המחלקה לעיל? -
@קו-מהיר בקיצור, אתה צריך ללמוד php ואח"כ ללמוד איך להתממשק עם ימות. איפה אתה אוחז?
תראה כאן
https://f2.freeivr.co.il/post/36214 -
-
@קו-מהיר אותו דבר רק במקום לכתוב את הקוד בתוכנה אתה כותב ישירות בטופס php בשרת, ואח"כ את מריץ את הכתובת של הקובץ בדפדפן.
בשרת שלך למשל את מריץ את זה כך:https://******.000webhostapp.com/שם הקובץ.php
-
@מוטלה
את זה ידעתי, אבל האם לכתוב כתובת קובץ או תקייה והאם הסיומת PHP זה רק במערכת או גם בשרת? -
@קו-מהיר תפתח קובץ בשרת, תקרא לו בשם כל שהוא ובסיומת php.
שים לב שזה יהיה בתיקייתpublic_html
ואח"כ אתה מריץ ישירות בדפדפן את השם של הקובץ עם הסיומת. -
@מוטלה
אה, כי אני כתבתי את הקובץ בתקייה הראשית -
דרך אגב, למה שאני עושה שנה שם לקובץ הוא כותב לי כך:הזן שם חדש עבור שקר
-
@קו-מהיר נראה לי שגיאה בתרגום, תבטל את זה.
-
@מוטלה
אתה צודק, הוא מתרגם לי הכל גם את הקבצים של ה-PHP
איך אני מבטל? פשוט כששואל אם אנגלית או עברית ללחוץ עברית? -
@מוטלה
זה לא משמיע את המספר שהקיש! -
@קו-מהיר מה רשמת בקובץ?
-
@bluma
זה מה שצריך להחזיר בקונטרולר ואז זה יעבוד לכםreturn new HttpResponseMessage() { Content = new StringContent(resultContent, Encoding.UTF8, "text/html") };
-
@מגד
איפה לכתוב את זה?
כתבתי כך:<?php $ApiDID = $_GET['ApiDID']; $password = $_GET['password']; if ($ApiDID == NULL){echo "read=t-אנא הקש את מספר המערכת שלך ובסיום הקש סולמית=ApiDID,no,10,9,7,No";exit();} if ($password == NULL){echo "read=t-נא הקש את סיסמת המערכת ובסיום הקש סולמית=password,no,,,7,No";exit();} ?>
להוסיף מתחת? כלומר כך:
<?php $ApiDID = $_GET['ApiDID']; $password = $_GET['password']; if ($ApiDID == NULL){echo "read=t-אנא הקש את מספר המערכת שלך ובסיום הקש סולמית=ApiDID,no,10,9,7,No";exit();} if ($password == NULL){echo "read=t-נא הקש את סיסמת המערכת ובסיום הקש סולמית=password,no,,,7,No";exit();} return new HttpResponseMessage() { Content = new StringContent(resultContent, Encoding.UTF8, "text/html") }; ?>
-
@קו-מהיר
זה למי שכותב בc# -
@מגד
אבל מה לעשות בשביל שיקיש וישמיע את ההקשה?? -
@קו-מהיר תכתוב כך
<?php $ApiDID = $_GET['ApiDID']; $password = $_GET['password']; if ($ApiDID == NULL){echo "read=t-אנא הקש את מספר המערכת שלך ובסיום הקש סולמית=ApiDID,no,10,9,7";exit();} if ($password == NULL){echo "read=t-נא הקש את סיסמת המערכת ובסיום הקש סולמית=password,no,,,7";exit();} ?>
-
@מוטלה
כתבתי כך וזה רק מבקש מערכת וסיסמה אבל לא משמיע את המספר שהקיש!!!