का उपयोग कर HTTP पोस्ट के लिए सही प्रारूप मैं वेब सेवा के लिए JSON क्वेरी भेजने की कोशिश कर रहा हूं और मुझे क्वेरी के जवाब के रूप में आंतरिक सर्वर त्रुटियां मिलती रहती हैं।QNetworkRequest
यहाँ है कि मैं क्या भेजने के लिए कोशिश कर रहा हूँ है:
POST /api/1.7/webservice.asmx HTTP/1.1
Host: www.superService.com
User-Agent: My app name v0.1
X-Custom-User-Agent: My app name v0.1
Content-Type: application/json
Content-Length:81
{"method":"AuthenticatePlain","loginName":"[email protected]","password":"mypass"}
यह https://www.superService.com/api/1.7/ssapi.asmx
के लिए भेजा जाना माना जाता है QNetworkRequest की तैयारी में, क्या विधि लाइन डालने के लिए प्रयोग किया जाता है
पोस्ट /पीआई/1.7/webservice.asmx HTTP/1.1?
क्या QNetworkRequest ऑब्जेक्ट में निहित पूर्ण शीर्षलेख है?
क्या JSON डेटा QNetworkRequest ऑब्जेक्ट में होना चाहिए या क्या QNetworkAccessManager :: post() विधि में दूसरे तर्क के रूप में पोस्ट में जोड़ा गया है?
connect(m_qnam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(handleNetworkData(QNetworkReply*)));
connect(m_qnam,SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
this, SLOT(handleSSLErrors(QNetworkReply*)));
QString baseString = "";
baseString.append(QString("POST /api/1.7/webservice.asmx HTTP/1.1\r\n").toUtf8());
baseString.append(QString("www.superService.com\r\n").toUtf8());
baseString.append(QString("User-Agent: My app name v0.1\r\n").toUtf8());
baseString.append(QString("X-Custom-User-Agent: My app name v0.1\r\n").toUtf8());
baseString.append(QString("Content-Type: application/json\r\n").toUtf8());
QString jsonString = QString("{");
jsonString.append("\"method\":");
jsonString.append("\"AuthenticatePlain\"");
jsonString.append(",\"loginName\":");
jsonString.append("\"[email protected]\"");
jsonString.append(",\"password\":");
jsonString.append("\"mypass\"");
jsonString.append("}");
QByteArray json = jsonString.toUtf8();
baseString.append(QString("Content-Length:").toUtf8());
baseString.append(QString::number(json.length()));
baseString.append("\r\n").toUtf8();
baseString.append(QString("\r\n").toUtf8());
baseString.append(json);
request = QNetworkRequest(QUrl("https://www.superService.com/api/1.7/ssapi.asmx"));
request.setRawHeader()
qDebug() << "Base String: "<< baseString;
m_qnam->post(request,baseString.toUtf8());
त्वरित प्रतिक्रिया के लिए धन्यवाद! क्या रेखा _italic_POST /api/1.7/webservice.asmx HTTP/1.1 _italic_ अनावश्यक है, या अनुरोध में इसे कैसे सम्मिलित किया जाएगा? – DarwinIcesurfer
यह अनावश्यक है। */api/1.7/webservice.asmx * 'serviceURL' और * POST * के साथ' QNetworkAccessManager :: पोस्ट(); विधि के साथ निर्दिष्ट है। ** आपको "निम्न स्तर" HTTP अनुरोध लिखना नहीं है। क्यूटी आपके लिए यह करेगा **। इसके बारे में कुछ ट्यूटोरियल पढ़ने में संकोच न करें, मुझे लगता है कि यह आपके लिए बहुत उपयोगी होगा। –
मेरी जेसन स्ट्रिंग भी गलत थी। मुझे "विधि", "पैरामीटर" और "आईडी" पास करने की आवश्यकता थी। मैं "पैरामीटर" ऑब्जेक्ट और "आईडी" ऑब्जेक्ट खो रहा था। यहां जेसन का एक अच्छा सारांश [लिंक] (http://en.wikipedia.org/wiki/JSON-RPC#Version_1.0) – DarwinIcesurfer