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" 오류 가 난다면, 서버는 작동을 하나, 파라메터와 값들이 틀렸다는 것이다.
//추가

는 매우 편리한 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();
처럼 직관적인 사용이 가능하다.
..
'C#' 카테고리의 다른 글
보다 심플한 C# 싱글턴 만들기 (0) | 2017.01.30 |
---|---|
상속된 Generic 타입 만들기, 타입의 제약 사항 선언 ( Generics Constraint ) (0) | 2016.11.19 |
WebClient 를 이용한 GET 과 POST 전송하기. (0) | 2016.08.27 |
키넥트의 장치 ID 알아내기 (Kinect for Windows) (1) | 2015.02.05 |
[WPF] 멀티쓰레딩 에서 GUI 렌더링과 그것의 속성을 외부에서 접근하기 (1) | 2015.01.13 |
[C#] 리플렉션 없고 자동완성 되는 PresetLoader.cs (1) | 2015.01.08 |