2017-01-27 23 views
2

以下のJSONデータをC#形式で送信する方法には多くの問題があります。私はcURLでそれを行う方法を正確に知っていますが、私の人生のためにこれを理解することはできません。この要求は、私がやっていることに不可欠であり、本当にそれを達成する必要があります。それは私がElasticsearchサーバに要求を作っています、と私はJSONデータをつかんでいますすべてで助けている場合C#でHTTPリクエストを使用してJSON GETデータを送信する方法

curl <ip of server>/<index>/_search?pretty=true -d ' 
{ 
"query": { 
    "match_all": {} 
}, 
"size": 1, 
"sort": [{ 
    "_timestamp": { 
     "order": "desc" 
    } 
}] 
} 

:ここではカール文です。このcURLリクエストは私に必要なものを正確に与えてくれます。ここに私が今いるC#コードはありますが、このJSONデータをGETリクエストにどのように追加するのかはわかりません。これはUnityゲームエンジンでも実行されます。

 // Create a request for the URL.   
     request = WebRequest.Create(elk_url); 
     // If required by the server, set the credentials. 
     request.Credentials = CredentialCache.DefaultCredentials; 
     // Get the response. 

     response = (HttpWebResponse)request.GetResponse(); 
     // Display the status. 
     Debug.Log(response.StatusDescription); 
     // Get the stream containing content returned by the server. 
     dataStream = response.GetResponseStream(); 
     // Open the stream using a StreamReader for easy access. 
     reader = new StreamReader(dataStream); 
     // Read the content. 
     string responseFromServer = reader.ReadToEnd(); 
     // Display the content. 
     Debug.Log(responseFromServer); 
     // Cleanup the streams and the response. 
     reader.Close(); 
     dataStream.Close(); 
     response.Close(); 

上記はドキュメントページからのものです。私はコードでHTTPリクエストをかなり新しくしていますので、どんな助けでも大歓迎です。必要に応じて、あなたはPOSTDATAパラメータ(私のwwwForm)を供給していない場合はGETする

public IEnumerator SendSomething() 
    { 
     WWWForm wwwForm = new WWWForm(); 
     wwwForm.AddField("Parameter_Name", jsonString); 

     WWW www = new WWW(url, wwwForm); 
     yield return www; 

     if (www.error == null) 
     { 
      Debug.Log("Everything worked!"); 
     } 
     else 
     { 
      Debug.Log("Something went wrong: " + www.error); 
     } 
    } 

WWWクラスのデフォルト:ここで

答えて

0

は、私はユニティWWW POSTで-requestを送信したい方法ですGETを使用するには、WWWクラスに:

WWW www = new WWW(url + "?" + jsonString); 

を入力し、私のメソッドの最初の2行をスキップするだけです。

ここでは、IEnumeratorをyield return www:に利用しています。これは、続行するまで要求が完了するまで待機します。 IEnumeratorメソッドを使用するには、StartCoroutine(SendSomething());を呼び出してasyncronizedを実行します。

+0

実行すると「400 Bad Request」が表示されます – BenjaFriend

1

私はそれを理解しました!

WebRequest request = WebRequest.Create(elk_url); 

    request.ContentType = "application/json"; 
    request.Method = "POST"; 
    byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(queryString); 
    string result = System.Convert.ToBase64String(buffer); 
    Stream reqstr = request.GetRequestStream(); 
    reqstr.Write(buffer, 0, buffer.Length); 
    reqstr.Close(); 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    Debug.Log(response.StatusDescription); 
    dataStream = response.GetResponseStream(); 
    // Open the stream using a StreamReader for easy access. 
    reader = new StreamReader(dataStream); 
    // Read the content. 
    string responseFromServer = reader.ReadToEnd(); 
    // Display the content. 
    Debug.Log(responseFromServer); 
    // Cleanup the streams and the response. 
    reader.Close(); 
    dataStream.Close(); 
    response.Close(); 

クエリ文字列は、元の投稿のJSONデータです。 ELKスタックを知りたい方は、最新のイベントのJSONデータ(文字列形式)を提供します。使用するビートに応じて、これはデータのビジュアライゼーションにとって非常にクールかもしれません。

関連する問題