Delphi7访问Go语言REST实例
suikhan@126.com, 2018-12-13 @ shijiazhuang1、Go创建示例的Rest服务
package mainimport (
"github.com/iris-contrib/middleware/cors"
"github.com/kataras/iris"
)func main() {
app := iris.New()
crs := cors.New(cors.Options{
AllowedOrigins:[]string{"*"},
AllowCredentials: true,
})v1 := app.Party("/api/v1", crs).AllowMethods(iris.MethodOptions)
{
v1.Get("/home", func(ctx iris.Context) {
ctx.WriteString("Hello from /home")
})
v1.Get("/about", func(ctx iris.Context) {
ctx.WriteString("Hello from /about")
})
v1.Post("/send", func(ctx iris.Context) {
ctx.WriteString("sent")
})
v1.Put("/send", func(ctx iris.Context) {
ctx.WriteString("updated")
})
v1.Delete("/send", func(ctx iris.Context) {
ctx.WriteString("deleted")
})
}app.Run(iris.Addr(":8080"))
}
2、Delphi7创建窗体程序
窗体程序,增加两个按钮和两个Memo。
2.1 添加引用
uses msxml;
2.2 编写POST和GET函数
///
/// Post方式访问Rest服务
///
/// rest服务地址
/// 请求字符串
/// 响应字符串
/// 访问是否成功
function RestPost(url, req : string;
out resp : string) : Boolean;
var
rest : IXMLHTTPRequest;
begin
Result := True;
try
rest := CoXMLHTTPRequest.Create;
rest.open('Post', url, False, EmptyParam, EmptyParam);
rest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
rest.Send(req);
resp := (rest.responseText);
except
on e : Exception do
begin
resp := 'ERROR:' + e.Message;
Result := False;
end;
end;
end;
///
/// Get方式访问Rest服务
///
/// rest服务地址
/// 【Delphi7访问Go语言REST实例】相应字符串
/// 访问是否成功
function RestGet(url : string;
out resp : string) : Boolean;
var
rest : IXMLHTTPRequest;
begin
Result := True;
try
rest := CoXMLHTTPRequest.Create;
rest.open('Get', url, False, EmptyParam, EmptyParam);
rest.Send('');
resp := (rest.responseText);
except
on e : Exception do
begin
resp := 'ERROR:' + e.Message;
Result := False;
end;
end;
end;
2.3 调用接口返回
procedure TForm1.btnPostClick(Sender: TObject);
var
resp : string;
begin
if RestPost('http://localhost:8080/api/v1/send/', Memo1.Text, resp) then
begin
ShowMessage('执行成功!');
end;
Memo2.Text := resp;
end;
procedure TForm1.btnGetClick(Sender: TObject);
var
resp : string;
begin
if RestGet('http://localhost:8080/api/v1/home/', resp) then
begin
ShowMessage('执行成功!');
end;
Memo2.Text := resp;
end;
推荐阅读
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- Android7.0|Android7.0 第三方应用无法访问私有库
- C语言解方程的根和判断是否是闰年
- C语言的版本比较
- 【C】题目|【C语言】题集 of ⑥