2

我有 Clarion 9 应用程序,我希望能够与 HTTP 服务器通信。我来自 PHP 背景。我对该怎么做的想法为 0。

我希望能够做到的:

  • 解析 JSON 数据并将 QUEUE 数据转换为 JSON [完成]

  • 有一个像“baseURL”这样的全局变量,它指向例如http://localhost.com[Done]

  • 调用这样的函数apiConnection.get('/users')会返回页面的内容。[我被困在这里]

  • apiConnection.post('/users', myQueueData)将发布 myQueueData 内容。

我尝试通过从 LibMaker 读取它来使用 winhttp.dll,但它没有读取它。相反,我现在使用的是wininet.dll,LibMaker 成功地为它创建了一个 .lib 文件。

我目前正在 GitHub https://gist.github.com/ddur/34033ed1392cdce1253c上使用此代码中的 PROTOTYPE 程序

我所做的是将它们包括在内:

简单API.clw

PROGRAM
     INCLUDE('winInet.equ')
      ApiLog    QUEUE, PRE(log)
      LogTitle  STRING(10)
      LogMessage    STRING(50)
     END

     MAP
      INCLUDE('winInetMap.clw')
     END

     INCLUDE('equates.clw'),ONCE 
     INCLUDE('DreamyConnection.inc'),ONCE

     ApiConnection     DreamyConnection

CODE

    IF DreamyConnection.initiateConnection('http://localhost')
       ELSE
          log:LogTitle = 'Info'
          log:LogMessage = 'Failed'
          ADD(apiLog)
    END

但是winInet使用的缓冲区总是返回0。

我创建了一个 GitHub 存储库https://github.com/spacemudd/clarion-api,其中包含所有要查看的代码。

我真的迷失了,因为我找不到 Clarion 的正确文档。

不想要付费解决方案

4

1 回答 1

3

这取决于您拥有的 Clarion 版本。从 v9 开始,他们添加了 ClaRunExt,它通过 .NET Interop 提供了这种功能。

从帮助:

使用 HTTP 或 HTTPS 下载网页或任何其他类型的文件。您还可以将表单数据发布到 Web 服务器。使用最常用的 HTTP 动词向 Web 服务器、REST Web 服务或标准 Web 服务发送 HTTP Web 请求(和接收响应)的非常简单的方法;发布、获取、放置和删除。

否则,在LibSrc\目录中搜索“http”,您将了解已经存在的内容。abapi.inc例如,似乎为 wininet.lib 提供了一个包装器。

于 2017-07-24T11:38:01.270 回答