《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之74---BREW 中的HTTP 开发

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/5914105

IWeb接口的主要目的是为应用产生一个HTTP请求,对文件的请求使用HTTP中的“Get”方法,上载数据是通过HTTP的“Post”方法实现的 IWEB 能够管理自己的连接和sockets,使用IWEB_GetResponse 函数就可以启动一个 web 访问。

请求互联网上的一个文件示例如下:

// Create IWeb instance

ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_WEB, (void **)&pMe->m_pIWeb);

// Initialize the callback to WebReadCB

CALLBACK_Init(&pMe->m_Callback, WebReadCB, pMe);

// Request IWEB to fetch the file

IWEB_GetResponse(pMe->m_pIWeb,

           (pMe->m_pIWeb, &pMe->m_pIWebResp, &pMe->m_Callback,

           "http://www.qualcomm.com",      WEBOPT_HANDLERDATA, pMe,

           WEBOPT_STATUSHANDLER, WebStatusNotification,

           WEBOPT_METHOD, "GET",WEBOPT_END));

其中WebReadCB()为获得服务器相应内容的回调函数,参考实现如下:

static void WebReadCB(void* cxt)

{

// Get information about the response

WebRespInfo* pWebRespInfo = IWEBRESP_GetInfo(pMe->m_pIWebResp);

// the body of the response is contained in the ISOURCE within

ISource* pISource = pWebRespInfo->pisMessage;

}

WebOptsWeb 选项)用于操作 IWeb 配置选项。IWebOpts代表选项堆栈或列表,这些选项可以为单值或多值,且不强制单值或多值选项的语义。选项堆栈的访问按添加时的顺序进行,可以通过IWebOpt设定,也可以Web请求中直接指定。

PFNWEBHEADER是用于获取HTTP header信息的回调函数原型。它将作为 WEBOPT_HEADERHANDLER传递给IWEB_AddOpt() IWEB_GetResponse()PFNWEBSTATUS是获取请求状态的回调原型,将作为 IWEBOPT_STATUSHANDLER 传递给IWEB_AddOpt() IWEB_GetResponse()

如果URL中含有一些关键字的话,需要先对URL进行编码,否则无法正确解析,其示例如下:

// Determine what the length of the output buffer needs to be

IWEBUTIL_UrlEncode(pMe->m_pIWebUtil,

(const char *)(buf), // buffer containing the suffix of URL with reserved chars

&nDataLen, // number of characters to be encoded

NULL, // if NULL, method calculatessize of buffer needed

&pMe->m_dwContentLength // contains the length of the buffer required

);

// Allocate space to hold the encoded string

if(pMe->m_dwContentLength)

pMe->m_szData = (char*) MALLOC(pMe->m_dwContentLength);// Encode the string.

IWEBUTIL_UrlEncode(pMe->m_pIWebUtil,

                       (const char *)(buf), &nDataLen,pMe->m_szData, &pMe->m_dwContentLength);

IWEB 接口可以使HTTP连接一直处于激活状态,而且这是IWeb接口的默认状态,通过使用Web选项WEBREQUEST_NOKEEPALIVE WEBOPT_FLAG可以禁用这一功能。其中保持激活状态依赖于Content-Length HTTP头,只有当“Content-Length: xxx HTTP头有效时,这一特性才能正常工作。对于远端,如果需要知道何时调整读取的时候或者需要知道内容长度的时候,连接都需要被关闭。

目录
相关文章
|
18天前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
150 61
|
14天前
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
60 18
|
3月前
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
274 82
|
9月前
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
548 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
3月前
|
人工智能 网络协议 API
开发效率翻倍!Apipost这些协议调试秘籍,从HTTP到金融报文全搞定
Apipost是一款强大的API研发管理工具,支持多种协议与数据格式,包括HTTP(s)、WebSocket、SSE、gRPC、TCP及金融协议(如ISO 8583、FIX)。它内置国密算法库,提供HTTP文件秒传、全局参数配置等实用功能。在SSE调试中,可轻松处理AI模型流式响应;WebSocket与Socket.IO实现高效实时通信;GraphQL支持可视化Query编写;TCP模块解决金融报文编码难题;gRPC则具备服务反射与流式调试能力。Apipost不仅简化了多协议切换的复杂性,还自动生成文档,显著提升开发效率,让开发者专注于核心业务逻辑。
|
4月前
|
XML JSON Linux
Reqable:跨平台HTTP开发与调试工具
Reqable是一款功能强大且易于使用的跨平台HTTP开发与调试工具,具有多平台支持、全面的HTTP请求构建与解析、请求历史记录和环境管理等功能。它简化了HTTP请求的构建、发送和响应分析过程,为开发者提供了极大的便利。通过Reqable,开发者可以更高效地进行HTTP开发和调试,提高工作效率和代码质量。
316 26
|
4月前
|
缓存 安全 数据处理
Objective-C开发:从HTTP请求到文件存储的实战
Objective-C开发:从HTTP请求到文件存储的实战
|
12月前
|
运维 Serverless API
Serverless 应用引擎使用问题之如何开发HTTP服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
12月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
123 3
|
SQL DataWorks Java
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
226 1
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决