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();
}
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
}
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
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 TToClass<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();
43
XMLのNodeアクセス
// LINQでよろしく
var me= (
from person in xdoc.Descendants("person")
where person.Element("name").Value == "Tomonori Ohba“
select person
).FirstOrDefault();