22. 21
(1)単純なGET
using (var handler = new HttpClientHandler())
using (var httpClient = new HttpClient(handler))
{
var httpResponseMessage =
await httpClient.GetAsync(uri);
var content =
await httpResponseMessage.Content.ReadAsStringAsync();
}
23. 22
(1)単純なPOST
using (var handler = new HttpClientHandler())
using (var httpClient = new HttpClient(handler))
using (var formUrlEncodedContent = new
FormUrlEncodedContent(queryParams)) // Dictionary<string,string>
{
var httpResponseMessage =
await httpClient.PostAsync(uri, formUrlEncodedContent);
var content =
await httpResponseMessage.Content.ReadAsStringAsync();
}
28. 27
(3)リダイレクトのハンドリング
using (var handler = new HttpClientHandler())
using (var httpClient = new HttpClient(handler))
{
handler.AllowAutoRedirect = false;
var res = await httpClient.GetAsync(uri);
if (res == HttpStatusCode.Redirect)
{
// res.Headers.Location がリダイレクト先URL
}
30. 29
(4)バイナリデータの取得
var stream = await
httpResponseMessage.Content.ReadAsStreamAsync();
var binaryReader = new BinaryReader(stream);
var contentBytes = new byte[contentLength]
binaryReader.Read(contentBytes, 0, contentBytes.Length);
39. 38
JSON Parse 受けるPropの作成
[DataContract]
public class PersonsJson
{
[DataMember(Name="groupName")]
public string GroupName { get; set; }
[DataMember(Name="persons")]
public List<PersonJson> Persons { get; set; }
}
40. 39
JSONのParseとインスタンス化
var dataContractJsonSerializer = new
DataContractJsonSerializer(typeof(PersonJson));
var memoryStream = new
MemoryStream(Encoding.Unicode.GetBytes(json));
var personJsonInstalce =
(PersonJson)dataContractJsonSerializer.ReadObject(memoryStream
);
41. 40
GeneicにしちゃえばOK
public static T ToClass<T>(string json) {
var dataContractJsonSerializer = new
DataContractJsonSerializer(typeof(T));
var memoryStream = new
MemoryStream(Encoding.Unicode.GetBytes(json)))
return
(T)dataContractJsonSerializer.ReadObject(memoryStream);
}
42. 41
JSONの要素アクセス
// LINQでよろしく
var me = (
from person in json.Persons
where person.Name == "Tomonori Ohba"
select person
).FirstOrDefault();
44. 43
XMLのNodeアクセス
// LINQでよろしく
var me = (
from person in xdoc.Descendants("person")
where person.Element("name").Value == "Tomonori Ohba“
select person
).FirstOrDefault();