post方式提交数据xml数据!该怎么解决

本文详细解释了如何使用POST方式提交XML数据至指定接口,包括接口协议、数据导入、参数说明及返回结果解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

post方式提交数据xml数据!
最近需要写一个新功能,但是由于对http不是很熟悉,所以文档不是很懂,希望高手能帮忙解答,文档如下:


  接口协议说明
协议说明:
  接口采用post方式提交数据
  采用UTF-8编码
  提交数据格式为xml

将数据导入
功能说明:
  数据导入

接口地址:
http:// gggg.fffff.com/api/pdOpt.php
参数说明:
数据以xml格式提交,参数如下:
action 操作名称(导入import,修改edit,……)
poststr 存放提交的xml格式的字符串
sign 签名认证,参数拼接后md5,即
md5(‘action=’.$action.’poststr=’.$poststr.$commenkey),其中commenkey为常量p2u0d1a2ta

其中xml格式的数据形式如下:
<xml version=’1.0’encoding=’UTF-8’>
<root>
<list>
<subject>标题</subject> //标题
<message>内容</message> //内容
<stockname>sh600081</stockname> //栏目代码
<author>tianshang</author> //作者
</list>
……………
</root>

返回结果:json形式返回
返回参数说明:
code: 状态标识(0:失败,1:成功)
data: 信息提示


我通过post发送的格式如下:
retVal = htsend(black_sock, "POST ggggg.fffff.com/api/pdOpt.php HTTP/1.1\r\n", 10);
retVal = htsend(black_sock, "Host: ggggg.fffff.com\r\n", 10);
retVal = htsend(black_sock, "Content-Length: %d\r\n", len, 10);
retVal = htsend(black_sock, "Connection: close\r\n", 10);
retVal = htsend(black_sock, "\r\n", 10);
retVal = htsend(black_sock, "%s", data, 10);

不知道这样正确不,主要是对于发送的数据格式不知道到底该怎么弄,能不能举个例呢?
我是直接用给的那个
<xml version=’1.0’encoding=’UTF-8’>
<root>
<list>
<subject>标题</subject> //标题
<message>内容</message> //内容
<stockname>sh600081</stockname> //栏目代码
<author>tianshang</author> //作者
</list>
……………
</root>

action poststr sign这3个参数是在不知道放哪里?希望高手帮忙解答,谢谢啊!

------解决方案--------------------------------------------------------
HEADER里面的MIME-TYPE设置了嘛(这个不是必要的,因为你可以以binary数据传递。

另外就是编码,你server端数据收到了什么?
------解决方案--------------------------------------------------------
Webservice ?
可以使用Qt的QNetworkAccessManager类中的post方法来提交XML数据到WebService。 首先,需要创建一个QNetworkAccessManager对象,然后使用其post方法进行POST请求。在请求中,需要设置要发送的数据和请求头。 下面是一个使用Qt进行POST请求提交XML数据到WebService的示例代码: ```cpp #include <QCoreApplication> #include <QtNetwork> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建QNetworkAccessManager对象 QNetworkAccessManager manager; // 创建请求对象 QNetworkRequest request(QUrl("http://example.com/your_webservice_url")); // 设置请求头 request.setHeader(QNetworkRequest::ContentTypeHeader, "application/xml"); // 创建XML数据 QString xmlData = "<xml>Your XML data here</xml>"; // 发送POST请求 QNetworkReply *reply = manager.post(request, xmlData.toUtf8()); // 连接请求完成的信号 QObject::connect(reply, &QNetworkReply::finished, [=]() { // 处理请求完成后的操作 if(reply->error() == QNetworkReply::NoError) { QString response = QString(reply->readAll()); // 处理WebService返回的响应数据 qDebug() << "Response: " << response; } else { qDebug() << "Error: " << reply->errorString(); } // 释放资源 reply->deleteLater(); a.quit(); }); return a.exec(); } ``` 以上代码中,将xmlData字符串作为POST请求的数据体,设置Content-Type为"application/xml"来指定POST数据的类型为XML。 在请求完成后的槽函数中,可以处理WebService返回的响应数据。 注意,该示例代码仅供参考,实际应用中可能需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值