gpt4 book ai didi

c++ - MFC框架中如何使用XML over HTTP实现双向通信

转载 作者:行者123 更新时间:2023-11-28 08:10:35 25 4
gpt4 key购买 nike

我的基于 MFC 的应用程序需要向另一个系统发送和从另一个系统接收基于 XML 的消息。现在,使用 MSXML2::IXMLHTTPRequestPtr 类处理客户端通信。这允许编写以下代码:

MSXML2::IXMLHTTPRequestPtr pHttpRequest;         // The HTTP Request object  
XmlDocument pXMLRequest; // The XML document contain
HRESULT hResult;
hResult = pHttpRequest.CreateInstance("Msxml2.ServerXMLHTTP.3.0");
if ( FAILED(hResult) ) throw Error (hResult);
pHttpRequest->open("POST", bURL,true);
pHttpRequest->send(pXMLRequest->xml); // Send the XML request
while (pHttpRequest->GetreadyState() != 4) // Just wait for the answer
{ // (automatically on a
pHttpRequest->waitForResponse(10); // separate thread so it
} // does not block)

m_lHttpStatus = pHttpRequest->status; //Read response and status
_bstr_t bsResponse = pHttpRequest->responseText; //responsetext contains the XML

相当简单,而且工作正常。但是另一端的系统需要能够做同样的事情,所以我的程序将不得不充当服务器。而且 MSXML 中似乎没有“XMLServer”对象。
现在我可以回到原始套接字编程。创建一个监听套接字,并在接收数据时尝试解析消息中的 XML。但这似乎不是很有效,与 HttpRequest 对象的易用性相比肯定不是这样。
实际上,我认为我希望在不发送任何数据的情况下启动 HttpRequest,而不是让它无限期地等待响应。因此,“响应”实际上是来自其他系统的请求。但是 waitForResponse() 仅在 send() 之后起作用。并且 send() 总是发送 Http Request 消息...

那么在一个 MFC 程序中实现客户端和服务器行为的最佳方式是什么?

最佳答案

HTTP 是一个客户端/服务器框架。你需要在一端有一个 HTTP 服务器,而 XMLHTTP 对象只实现客户端。

是的,它非常易于使用,但您真正想要的是 DCOM 或 TCP/IP 套接字之类的东西。

如果失败,您可以创建一个最小的 HTTP 1.0 服务器 - 这并不难。要么,要么您的体系结构中需要一个服务器。您可以使用 ASP 或 ASP.Net 以及一百万种其他方式非常轻松地创建一个。但我不禁想到您想要更像 DCOM 的东西。

底线:在决定方法之前,您需要决定沟通的模式。例如,您的程序将如何相互定位以开始对话?

关于c++ - MFC框架中如何使用XML over HTTP实现双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com