WebClient 를 이용한 GET 과 POST 전송하기.

GET 예제 


WebClient wc = new WebClient();
StringBuilder sb = new StringBuilder();
sb.Append("https://openapi.youku.com/v2/uploads/create.json?");
sb.AppendFormat("client_id={0}", client_id);
sb.AppendFormat("&access_token={0}", access_token);
sb.AppendFormat("&title={0}", "jjongun upload test " + time_str);
sb.AppendFormat("&tags={0}", "jjongun");
sb.AppendFormat("&file_md5={0}", hashString);
sb.AppendFormat("&file_name={0}", fileName);
sb.AppendFormat("&file_size={0}", video_data.Length.ToString());

string call_upload_cmd = sb.ToString();
string result = wc.DownloadString(call_upload_cmd);
Console.WriteLine(result);


보통 DownloadString (...) 으로 해결 가능 함.





POST 예제 , string 업로드


sb.Clear();
sb.AppendFormat("upload_token={0}", upload_token);
sb.AppendFormat("&file_size={0}", file_size);
sb.AppendFormat("&ext={0}", ext);
sb.AppendFormat("&slice_length={0}", 10240);
Console.WriteLine(sb.ToString());
result = wc.UploadString(host_addr, sb.ToString());



보통 UploadString 으로 해결 가능 하며 , 상황에 따라 Data 를 전송 할 것인지, Value 들만 전달 할 것인지 결정 할 수 있다.


sb.Clear();
sb.Append(host_addr);
sb.AppendFormat("upload_token={0}", upload_token);
sb.AppendFormat("&slice_task_id={0}", slice_task_id);
sb.AppendFormat("&offset={0}", offset);
sb.AppendFormat("&length={0}", length);

var result_bytes = wc.UploadData(sb.ToString(), "POST", video_data);
result = Encoding.Default.GetString(result_bytes);


위의 예제는 binary 를 전달 한 예제 이고, 결과 역시 byte[] 로 떨어지기 때문에 문자열로 인코딩을 하여 결과를 받아야 한다.



이때 오류 상황을 잘 볼 필요가 있는데, 만약 "400" 오류 가 난다면, 서버는 작동을 하나, 파라메터와 값들이 틀렸다는 것이다. 




//추가


System.Net.Json.dll


는 매우 편리한 JSON 라이브러리 이다.


보통 OAuth 들을 사용하는 서비들의 응답이 JSON 으로 오는 경우가 허다하다. 


JsonTextParser parser = new JsonTextParser();
JsonObject json_obj;
JsonObjectCollection collection;

json_obj = parser.Parse(result);
collection = json_obj as JsonObjectCollection;
collection["video_id"].GetValue();



처럼 직관적인 사용이 가능하다.

..


 



Yamecoder 야매코더_
C# 2016.08.27 18:19
Powerd by Tistory, designed by criuce
rss