2

MonoDroidプロジェクトでHttpClientクラスを使用しようとしていますが、System.Net.http名前空間のように見えますが無効です。

プロジェクトの参照をSystem.Net.http.dllに追加しようとしましたが、参照リストに表示されていないようです。

何か案が?

Thks

ここに画像の説明を入力してください

4

3 に答える 3

4

HttpClientは.NET4.5クラスであり、MonoforAndroidではまだ利用できません。Mono自体はバージョン3.0でサポートが追加されましたが、MonoforAndroidは引き続きMono2.10に基づいています。XamarinがMonoforAndroid(およびMonoTouch)のMono 3.0への更新に取り組んでいることは知っていますが、私が知る限り、リリース日はまだ設定されていません。

于 2013-01-15T12:42:19.070 に答える
2

古いスレッドであることは知っていますが、XamarinがついにXamarin.Android 4.8System.Net.Httpで提供されたのを見たので、それをあなたと共有することも考えました。

ありがとう。

于 2013-08-05T09:22:51.887 に答える
1

HttpClient(まだ!)使用することはできませんが、System.Net.HttpWebRequestオブジェクトを使用することはできます。オブジェクトは、便利なラッパーを提供できることを実際に実行しますHttpClient(特に、Web APIコントローラーを起動する場合)。

これが私が取り組んでいる現在のプロジェクトからのサンプルです(NewtonSoft.Json標準ではなく、のモノドロイドポートを使用していますSystem.Runtime.Serialization.Json):

    private void AddARecord()
    {
        var cartesian = new Cartesian()
                            {
                                Description = "next item blah",
                                X = 5,
                                Y = 10,
                                Z = 15,
                            };

        string json = JsonConvert.SerializeObject(cartesian);

        var request = new HttpWebRequest(new Uri(_url)) {ContentType = "application/json", Method = "POST"};
        var sw = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
        sw.Write(json);
        sw.Close();

        request.BeginGetResponse(ProcessJsonResponseForSingleResult, request);
    }

...私がヒットしているWebAPIコントローラーは、任意の処理を実行し、送信したオブジェクトを保存してから、説明を微調整して、機能することを確認します。次に、微調整されたオブジェクトを送り返します...

そして、コールバックProcessJsonResponseForSingleResultは次のようになります

    private void ProcessJsonResponseForSingleResult(IAsyncResult ar)
    {
        var request = (HttpWebRequest)ar.AsyncState;
        var response = request.EndGetResponse(ar);

        using (var outputStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.ASCII))
        {
            var jsonString = outputStream.ReadToEnd();
            Log.Info("PJRFSR", string.Format("JSON string: {0} - deserialising...", jsonString));
            var cartesian = JsonConvert.DeserializeObject<Cartesian>(jsonString);

            RunOnUiThread(() => UpdateUiTextView(cartesian.Description));
        }

    }

ええ、私は知っています、それは私がもう好きではないBeginAsync / EndAsyncパターンを使用します、しかしあなたが何かをする必要があるだけならそれは働きます。

于 2013-02-15T05:24:24.710 に答える