Delphi中怎么通过http get方式来调用url

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi中怎么通过http get方式来调用url相关的知识,希望对你有一定的参考价值。

API接口使用HTTP协议,可接受HTTPGET 和HTTPPOST访问。
参数传递方式为application/x-www-url-encoded,编码方式为UTF-8,且须遵循URL 编码规范
(RFC3986)对保留字符进行百分号编码。
操作结果返回方式为XML,编码方式为UTF-8。
接口地址:
http://api.123.com/XMLHttpService.do

比如使用 API 创建域名,假设已有一个模板 ID 为 10,使用此模板注册一域名 456.com,注册一年,
以下是以HTTPGET方式调用 API的URL:
http://api.123.com/XMLHttpService.do?username=test@namemax.cn&password=888888&command=re
gisterDomainName&domainName=456.om&period=1&templateId=10

URL中的username paeeword command domainname period templateId都是参数

请问如何使用Delphi的http get 调用url,并返回?需要加什么控件?最好给出完整的代码。

若操作成功,服务器将返回以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<command>registerDomain</command>
<result>SUCCESSFUL</result>
<data>
<domain>456.com</domain>
<creationDate>2008-06-22 08:38:00</creationDate>
<expirationDate>2009-06-21 08:38:00</expirationDate>
<priceId>CNNIC-REG-1Y</priceId>
<price>1.0</price>
<autoRenew>false</autoRenew>
<template>
<templateId>1000</templateId>
<name>xxxxxx</name>
<registrant>
<cnOrganization>xxxxxx</cnOrganization>
<organization>xxxxxx</organization>
<cnName>哈哈</cnName>
<name>haha</name>
<cnProvince>shandong</cnProvince>
<province>linyi</province>
<cnCity>lili</cnCity>
<city>lili</city>
<cnAddress>dddd</cnAddress>
<address>dddd</address>
<postal>333333</postal>
<email>service@wwwwww.com</email>
<phone>+86.13833138033</phone>
<fax>+86.13833200533</fax>
</registrant>
<adminSameAsRegistrant>true</adminSameAsRegistrant>
<techSameAsRegistrant>true</techSameAsRegistrant>
<billingSameAsRegistrant>true</billingSameAsRegistrant>
</template>
<statuses>
<status>clientDeleteProhibited</status>
<status>clientTransferProhibited</status>
</statuses>
<nsList>
<ns>ns1.123.com</ns>
<ns>ns2.123.com</ns>
</nsList>
</data>
</response>
参考技术A 使用 TIdHttp 组件

Google端点在日志中为GET /提供了无效的HTTP模板/

我正在使用Google端点来部署我的一些API。我在返回HTTP 200的[GET /]上公开运行状况API,以便GKE入口可以通过调用此API将我的容器视为运行状况良好。

但是当我使用[ip-address /]调用此端点时,端点总是抱怨方法不存在。这对于路径[ip-address / hello]

正常工作

问:我是否应该以其他不同方式配置/端点。

下面是ESP(GKE可扩展服务代理容器)的启动程序日志

nginx: [warn] Using trusted CA certificates file: /etc/nginx/trusted-ca-certificates.crt
2020/06/02 11:33:13[error]1#1: Invalid HTTP template: /
2020/06/02 11:33:13[error]1#1: Failed to add http rule: selector: "1.abcd_api_endpoints_my_app_cloud_goog.GetHealth"
get: "/"

我的开放式api分隔词yaml

swagger: "2.0"
info:
  title: Dummy API
  description: Dummy API
  version: 1.0.0
host: abcd-api.endpoints.my-app.cloud.goog
consumes:
  - application/json
produces:
  - application/json
schemes:
  - http
paths:
  /:
    get:
      description: Logs service health status
      operationId: getHealth
      responses:
        '200':
          description: Logs service health.
  /hello:
    get:
      description: Returns Hello World
      operationId: helloWorld
      responses:
        '200':
          description: Returns Hello World
答案

在阅读了esp的Google端点限制之后,我知道esp拒绝了根路径上的请求。

https://cloud.google.com/endpoints/docs/openapi/openapi-limitations#operations_on_url_root_path_

为了解决此问题并提供运行状况端点esp提供了--healthz参数。

https://cloud.google.com/endpoints/docs/openapi/specify-proxy-startup-options

https://github.com/GoogleCloudPlatform/endpoints-samples/blob/master/k8s/esp_echo_gke_ingress.yaml

以上是关于Delphi中怎么通过http get方式来调用url的主要内容,如果未能解决你的问题,请参考以下文章

delphi中使用HTTP控件,怎么使用POST的异步方式

delphi idhttp怎么填请求参数

delphi怎么使用

delphi中IdHTTP控件怎么实现下载

delphi 获取网页js返回数据

怎么在delphi中读取Excel数据 转