1

我正在使用 POCO/NET 用 C++ 开发一个项目。网络代码如下所示:

URI uri("http://my.url.se" );
HTTPClientSession session(uri.getHost(), uri.getPort());

// prepare path
string path(uri.getPathAndQuery());
if (path. empty()) path = "/";

// send request
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
req.set("Accept", "AcceptString");
req.set("Consumer", "ALL");
req.set("Contract", "ALL");
session.sendRequest(req);

// recieve response

HTTPResponse res;
istream &is = session.receiveResponse(res); 

该应用程序可在 Android 2.3.6(Samsung Galaxy Gio)和最新的 Android 版本上运行,但根据以下帖子(和 developer.android):

https://stackoverflow.com/questions/15606791/android-httppost-freezes-and-crashes-app

如果网络部分不在单独的线程中,则会在最新的 Android 版本(Honeycomb 或更高版本)上引发 NetworkOnMainThreadException。我还没有创建一个新线程,所以我的问题是:

谁能确认我的假设,即它已经实现/自动使用 Poco Net 库中的新线程?

非常感谢帮助!

4

1 回答 1

3

谁能确认我的假设,即它已经实现/自动使用 Poco Net 库中的新线程?

HTTPClientSession 不会在单独的线程上运行,您必须明确地这样做。您可以使用 Poco:: ThreadTaskActivity

于 2013-04-18T07:22:37.333 回答