地址标准化中ExtractAddress接口中php的调用

简介: 地址标准化中ExtractAddress接口中php的调用

调用darabonba-openapi提供的接口发起请求。

darabonba-openapi的github地址为:

https://github.com/alibabacloud-sdk-php/darabonba-openapi

<?php
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Addresspurification\V20191118\Models\ExtractAddressResponse;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\OpenApiRequest;
use Darabonba\OpenApi\Models\Params;
use Darabonba\OpenApi\OpenApiClient;
class Sample {
    public static function createClient($accessKeyId, $accessKeySecret){
        $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret
        ]);
        $config->endpoint = "address-purification.cn-hangzhou.aliyuncs.com";
        return new OpenApiClient($config);
    }
    public static function main($args){
        $client = self::createClient("accessKeyId", "accessKeySecret");
        $params = new Params([
            'action'      => 'ExtractAddress',
            'version'     => '2019-11-18',
            'protocol'    => 'HTTPS',
            'pathname'    => '/',
            'method'      => 'POST',
            'authType'    => 'AK',
            'style'       => 'RPC',
            'reqBodyType' => 'formData',
            'bodyType'    => 'json',
        ]);
        $query = [];
        $query['AppKey'] = 'Axqwerasdf1a';
        $query['ServiceCode'] = 'addrp';
        $query['Text'] = '文一西路969号';
        $req = new OpenApiRequest([
            'query' => OpenApiUtilClient::query($query),
        ]);
        $runtime = new RuntimeOptions([
            'maxIdleConns'=>3,
            'connectTimeout'=>10000,
            'readTimeout'=>10000
        ]);
        $resp = ExtractAddressResponse::fromMap($client->callApi($params, $req, $runtime));
        echo Utils::toJSONString(Tea::merge($resp));
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

IDE:Eclipse PHP

Dependencies:alibabacloud/address-purification-20191118

注意:一开始调试时报错:Request parameters has malformed encoded characters.

经过排查应该是Text参数传入中文导致,在Eclipse PHP中修改编码方式

Windows -- Preferences -- General -- Workspace

在 Text file encoding 中选择 Other,并输入我们想要的编码(这里是 UTF-8),按确定即可。

image.png

参考文档:

https://www.cnblogs.com/phpbin/archive/2012/09/26/2704397.html

目录
相关文章
|
4天前
|
监控 PHP Python
1688快速获取整店铺列表 采集接口php Python
在电子商务的浪潮中,1688平台作为中国领先的批发交易平台,为广大商家提供了一个展示和销售商品的广阔舞台;然而,要在众多店铺中脱颖而出,快速获取商品列表并进行有效营销是关键。
|
12天前
|
PHP 数据安全/隐私保护
【PHP开发专栏】PHP接口与抽象类的应用
【4月更文挑战第30天】本文探讨了PHP中接口与抽象类的使用,包括定义、实现和比较。接口用于规定实现类必须提供的方法签名,而抽象类则可以包含方法实现和抽象方法。一个类可实现多个接口,但只能继承一个抽象类。根据需求,若需定义不相关类的共同方法,选择接口;若需提供共享属性和非抽象方法,选择抽象类。通过实战应用示例,展示了如何在动物园管理系统中结合接口和抽象类进行设计。理解两者有助于提升代码的复用性和可维护性。
|
22天前
|
XML JSON API
快速淘宝商品详情页面API接口传输 php
PI(Application Programming Interface,应用程序接口)是一组预定义的函数、协议和工具,用于构建软件应用程序之间的交互。它允许不同的软件系统和应用通过统一的接口进行数据交换和通信
|
23天前
|
PHP
PHP面向对象编程精要:接口、抽象类和继承
PHP面向对象编程涉及接口、抽象类和继承。接口定义了类必须实现的方法,抽象类包含抽象方法,不可实例化,而继承允许子类扩展父类属性和行为。通过案例展示了如何使用interface、abstract和extends关键字。这些概念增强了代码的灵活性、可维护性和可扩展性。
14 1