9

このリンクから見つかった例を機能させようとしています。

GETおよびDELETEメソッドは機能していますが、 および に問題がPUTありPOSTます。サーバーからの返信: Bad RequestqDebug()私はこのエラーが発生します:

QNetworkReply::NetworkError(ProtocolInvalidOperationError)

httprequestworker.cppに、リクエスト タイプを次のように変更しました

request_content.append("Content-Type: application/fhir+json");

コンピューターからJSONファイルのコンテンツを取得し、サーバーへのリクエストの入力全体を実行するための私の関数は次のとおりです。

void MainWindow::on_pushButton_clicked()
{
    QString url_str = "http://hapi.fhir.org/baseDstu3/Patient/4705560";

    HttpRequestInput input(url_str, "PUT");

    QString settings;
    QFile file;

    file.setFileName("C:/Users/Lauri/Desktop/FHIR/Omia testeja/themostsimplepatientJSON.json");
    file.open(QIODevice::ReadOnly | QIODevice::Text);
    settings = file.readAll();
    file.close();

    settings.remove(QRegExp("[\\n]"));
    qDebug() << settings;
    settings.toUtf8();
    input.add_var("key1", settings);


    HttpRequestWorker *worker = new HttpRequestWorker(this);
    connect(worker, SIGNAL(on_execution_finished(HttpRequestWorker*)), this, SLOT(handle_result(HttpRequestWorker*)));
    worker->execute(&input);
}

アップロードしたい単純な JSON は次のとおりです。

{
  "resourceType": "Patient",
  "text": {
    "status": "generated",
    "div": "<div xmlns='http://www.w3.org/1999/xhtml'>This is a test patient<a name='mm'/></div>"
  },
  "name": [
    {
      "use": "usual",
      "prefix": [
        "Mr"
      ],
      "given": [
        "Teppo",
        "Testi"
      ],
      "family": "Testinen"
    }
  ],
  "telecom": [
    {
      "value": "123456789",
      "system": "phone",
      "use": "home"
    }
  ],
  "gender": "male",
  "birthDate": "2018-08-21"
}

POST郵便配達員やPUTその他のツールでできたので、JSONファイルは正しいはずです。私が行方不明であることは明らかですか?

郵便配達員からのキャプチャ:

PUT ヘッダー

PUT ボディ

POST ヘッダー

投稿本文

で、qDebug()JSON の読み取りが成功したことがわかります。私は解決策を見つけようとしましたProtocolInvalidOperationErrorが、成功しませんでした。

4

1 に答える 1