将json帖子从WordPress发送到android应用程序

elcex8rz  于 2022-11-26  发布在  WordPress
关注(0)|答案(1)|浏览(161)

希望有人可以帮助。我正在使用一个发送HTTP POST请求的应用程序。我有一个WordPress网站,我想主机的号码牌,我们将被称为拒绝板列表
以下内容来自应用程序开发人员:

**Request Android设备将HTTP POST消息发送到给定的url + /api/bwlist路径。应用生成包含以下字段的常规HTTP多部分消息:

·国籍:板块国籍·板块:所述电镀文本
这是一个生成相同消息的HTML:

<!DOCTYPE html>
<html>
 <body>
 <form action="http://ip:port/api/bwlist" method="post"
enctype="multipart/form-data">
 <label>Plate</label>
 <input type="text" name="plate" value="ARH001"><br>
 <label>Nat</label>
 <input type="text" name="nationality" value="HUN"><br>
 <input type="submit" value="Submit">
 </form>
 </body>
</html>

Result
For such a request, the server responds with a JSON text. Currently it has only one field: “type”.
The value can be “deny”, “allow” or “none” (lowercase). An example of such a result is the
following:
{
“type”:”deny”
}**

有人能请解释在简单的条款,我如何可以创建一个API,发送响应,如果在HTTP POST发送的板块是在拒绝列表中,它不是someting我以往任何时候都dne之前,但我好WordPress的有限水平. TIA

axzmvihb

axzmvihb1#

因此,我们将从数据库部分开始。您需要设置一个数据库表来存储数据。您可以随意更改MYSQL数据类型
因此,我们使用wordpress dbDelta()函数和一个表,该表存储所有车辆信息以及状态(随时更改表列)

function vehicles_database_functions(){
    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();
    
    $table_name_vehicles = $wpdb->prefix . 'vehicles';
    $table_name_vehicle_status = $wpdb->prefix . 'vehicle_status';
    
    $vehicles_sql = "CREATE TABLE " . $table_name_vehicles . " (
        id int(20) NOT NULL AUTO_INCREMENT,
        numberplate_country_code varchar(3) NOT NULL,
        numberplate varchar(10) NOT NULL,
        type char(5) NOT NULL,
        date_created timestamp NOT NULL,
        date_modified timestamp NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";
    
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($vehicles_sql);
    
}

vehicles_database_functions();

现在我们已经建立了数据库,您可以用车辆内容填充它。
接下来,您将需要处理HTTP请求:
因此在主题根目录中创建一个名为plate_callback.php新文件
在该文件中,您将处理所有HTTP请求:(确保你设置了某种验证,以知道谁张贴到你的网站是谁,它说它是。

$country_code = isset( $_POST['country_code'] ) ? sanitize_text_field( $_POST['country_code'] ) : '';
$numberplate = isset( $_POST['numberplate'] ) ? sanitize_text_field( $_POST['numberplate'] ) : '';
$type = isset( $_POST['type'] ) ? sanitize_text_field( $_POST['type'] ) : '';

if( $country_code && $numberplate && $type ){
    global $wpdb;
    
    $table_name_vehicles = $wpdb->prefix . 'vehicles';
    
    $denied_vehicle = $wpdb->get_row( 
        $wpdb->prepare( "SELECT * FROM $table_name_vehicles WHERE numberplate_country_code=%s AND numberplate=%s AND denied_entry=%s", array( $country_code, $numberplate, $type ) ), ARRAY_A
    );
    
    if( $denied_vehicle ){
        
        $vehicle_status = array('type' => $denied_vehicle['type']);
        echo json_encode($vehicle_status);
        
    }
    else{
        return false;
    }
    
}
else{
    wp_die('Error Message');
}

这应该会让你在正确的方向开始

相关问题