5
JSONクエリをWebサービスに送信しようとしていますが、クエリに対する応答として内部サーバーエラーが引き続き発生します。ここで QNetworkRequestを使用したHTTP POSTの正しい形式
は、私が送信しようとしているものです:、どのような方法は、行を挿入するために使用される。これは、 https://www.superService.com/api/1.7/ssapi.asmxに送られることになっている
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"}
QNetworkRequestの製造において
POST /api/1.7/webservice.asmx HTTP/1.1?
完全なヘッダーはQNetworkRequestオブジェクトに含まれていますか?
QNetworkAccessManager :: post()メソッドでJSONデータがQNetworkRequestオブジェクトにあるのか、それとも2番目の引数としてポストに追加されるべきですか?ここで
はon_btnLogin_clicked()スロットでの私の現在のコードです:
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 *は、 'QNetworkAccessManager :: post();'メソッドで 'serviceURL'と* POST *で指定されています。 **「低レベル」のHTTPリクエストを書く必要はありません。 Qtはあなたのためにそれを行います**。これについていくつかのチュートリアルを読むことを躊躇しないで、私はそれがあなたに非常に便利だと思う。 –
私のjson文字列も正しくありませんでした。私は "メソッド"、 "パラメータ"、 "id"を渡す必要がありました。私は、 "パラメータ"オブジェクトと "id"オブジェクトが欠けていました。 jsonの良いサマリー[link](http://en.wikipedia.org/wiki/JSON-RPC#Version_1.0) – DarwinIcesurfer