gpt4 book ai didi

c++ - Qt Web 服务发布查询

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

我正在尝试使用这个 http://www.rcsb.org/pdb/software/rest.do Qt 的 REST 服务。我做了一些没有问题的 get 请求,但是当我尝试对其高级搜索(这是一个 XML Web 服务)发出 post 请求时,我没有得到任何响应。

这是我正在尝试的发布请求:

<orgPdbQuery>

<queryType>org.pdb.query.simple.StructureIdQuery</queryType>

<description>Simple query for a list of PDB IDs (1 IDs) : 3I5F</description>

<structureIdList>3I5F</structureIdList>

</orgPdbQuery>

这是我的请求代码:

void WindowWrapper::postRequest()
{
QNetworkRequest request;

QUrl res = QUrl(request_url_);

QUrl query;
query.addQueryItem("queryType","org.pdb.query.simple.StructureIdQuery");
query.addQueryItem("structureIdList","3I5F");

request.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
request.setUrl(res);

QObject::connect(network_, SIGNAL(finished(QNetworkReply*)),
this, SLOT(slotRequestFinished(QNetworkReply*)));

network_->post(request, query.encodedQuery());
}


void WindowWrapper::slotRequestFinished(QNetworkReply* reply)
{
if(reply->error() > 0)
{
qDebug() << reply->errorString();
}
else
{
QByteArray data = reply->readAll();

qDebug() << "Request successful!";
qDebug() << data;
}
}

方法调用:

    wrapper_->set_request_url("http://www.rcsb.org/pdb/rest/search/");
wrapper_->postRequest();

在我的调试输出中我得到了这个:

Request successful! 
""

编辑:

我也试过这个请求,但我仍然没有得到回应:

void WindowWrapper::postRequest()
{
QNetworkRequest request;

request.setRawHeader("Content-Type", "text/xml;charset=UTF-8");
request.setUrl(QUrl(request_url_));

QString query =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<orgPdbQuery>"
"<queryType>org.pdb.query.simple.StructureIdQuery</queryType>"
"<description>Simple query for a list of PDB IDs (1 IDs) : 3I5F</description>"
"<structureIdList>3I5F</structureIdList>"
"</orgPdbQuery>";

QObject::connect(network_, SIGNAL(finished(QNetworkReply*)),
this, SLOT(slotRequestFinished(QNetworkReply*)));

network_->post(request, query.toUtf8());

谁知道我做错了什么?请...

最佳答案

您提供的链接说查询数据必须以 XML 编码。

而且我不知道为什么,但是该服务似乎只允许 application/x-www-form-urlencoded 作为 Content-Type,所有其他类型都触发一个redirection到“rest.do”页面。

关于c++ - Qt Web 服务发布查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847433/

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