質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

3465閲覧

Xamarin.Forms、WebApi通信について

ShoutaInoue

総合スコア28

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2016/11/13 13:56

編集2016/11/13 14:44

いつもお世話になっております。
Xamarin.Forms + PCLにてAPI駆動のアプリを作成しているのですが、
RESTクライアントをなにを使うべきか悩んでおります。
最初はHttpClientを使用する予定だったのですが、
PCLからだと非同期で行われる通信部分の処理が動作せず
レスポンスを取得できない現象が発生してしまいました。
HttpClient+PCLで動作させる方法はあるのでしょうか?
それともRestSharpなど別のライブラリを使用した方が良いのでしょうか?
アドバイスを頂けましたら幸いです。
HTTP部分はOSに依存させたくないので、PCLに記述したいと思っております。
通信プロトコルはHTTPSです。
何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

最初はHttpClientを使用する予定だったのですが、 PCLからだと非同期で行われる通信部分の処理が動作せずレスポンスを取得できない現象が発生してしまいました。

まず PCL で HttpClient を使っての非同期通信は問題なく行えるはずですので、この問題を解決する必要があるのではないかと思います。

Xamarin.iOS と ATS(App Transport Security)に関する通信トラブルについては、 HttpClient と ModernHttpClient を組み合わせて使うことで解決できるという情報があります。

また、 HttpClient 以外の選択肢としては、

があります。
これは Java-Android でよく使われている Retrofit によく似たライブラリで、属性により REST API を簡単に定義して使用できるというものです。
(このライブラリも結果的に HttpClient に依存しているかは未確認です。)

投稿2016/11/13 15:25

amay077

総合スコア1075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShoutaInoue

2016/11/13 15:40

ご回答ありがとうござます!HttpClientで行こうかと思います。 ModernHttpClientをインストールしたところ問題なく動作しました。 また、レスポンスが取得できないのではなく asyncのawaitとtask.Resultの待ちが重なり デッドロックを起こしておりました。 ConfigureAwait(false)などを利用してデッドロックを起こさないように工夫します。 ありがとうございました!とても参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問