0

Windows Phone 8 アプリケーションを開発
しています。system.net.httpwebrequest; を使用して dll を使用できません。
Windows Phone 8 では、http リクエストを webclient に変換する必要があります。変換方法を提案できますか?

     private HttpWebResponse GetHttpWebResponse(HttpWebRequest webRequest)
                {
                    HttpWebResponse response;

                    try
                    {
                        response = (HttpWebResponse)webRequest.GetResponse();
    //GetResponse() produce error that System.Net.HttpRequest dll is missing, 
    //so im in need to conertr the http request to webclient.
                    }
                    catch (WebException we)
                    {
                        response = (HttpWebResponse)we.Response;
                    }

                    return response;
                }

my complete Json data

    [
      {
        "id": 01,
        "address": "12asdf",
        "city": " chennai",
        "contact1": "",
        "contact2": "",
        "country": " india",
        "description": "",
        "name": " david",
        "region": "",
        "state": "  033",
        "website": "",
        "image": "",
         "PrayerTime": {
          "id": 01,
          "PrayerTime1": "00:52",
          "PrayerTime2": "21:04",
          "PrayerTime3": "12:27",
          "PrayerTime4": "05:35",
          "PrayerTime5": "21:04",
          "created_at": null,
          "PrayerTime6": "04:01",
          "updated_at": null,
          "organization_id": 001
        }
      },.............
      }
4

1 に答える 1

0

代わりに HttpClient (nuget パッケージ) を使用することをお勧めします。これはより便利で、WinRT でもサポートされています。

HttpClient を使用して、ソーシャル メディアから地理コード化されたデータを取得しようとする例を次に示します (それ自体は無関係ですが、実際の例です :) 。

(JObject/JArray を使用するには Newtonsoft.Json が必要です)

おそらく、自分の呼び出しで DefaultRequestHeaders を追加する部分を放棄することができます

            using (HttpClient client = new HttpClient())
            {
                string url = mediaConfig.RequestUrl + String.Format(mediaConfig.GeoCodeStringFormat, lat, lon, distance);

                if (mediaConfig.MediaName == "Twitter")
                    client.DefaultRequestHeaders.Add(mediaConfig.BearerTokenParamName, mediaConfig.BearerToken);
                else if (mediaConfig.MediaName == "Instagram")
                    url = url + "&" + mediaConfig.BearerTokenParamName + "=" + mediaConfig.BearerToken;
                else if (mediaConfig.MediaName == "GooglePlaces")
                    url = url + "&" + mediaConfig.BearerTokenParamName + "=" + mediaConfig.BearerToken;
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));

                response = await client.GetAsync(url);

                response.EnsureSuccessStatusCode();
            }
            responseString = await response.Content.ReadAsStringAsync();

「responseString」を返す場合は、メソッドの署名に async キーワードがあることを確認してください。

    public async Task<string> methodname(... params ...

同期メソッドからこのメソッドを「消費」するには:

var mytask = methodname();
    mytask.ContinueWith(c =>
    {
         var jsonResponse = JObject.Parse(c.Result);
         // or JArray
         var jsonResponseArray = JArray.Parse(c.Result);

         foreach (var item in jsonResponseArray)
         {
              var id = item.SelectToken("id").ToString();
              // and so on...

         }
         var selectSomething = jsonResponse.SelectToken("somethinghere");
         Deployment.Current.Dispatcher.BeginInvoke(() =>
         {
                 // do your ui tasks, navigate etc...
         });
    });
于 2013-11-08T10:57:28.210 に答える