[ad_1]
現在、送信リクエスト メソッドは文字列を返しますが、HttpWebResponse を返すようにする方法を知りたいので、GET、POST 呼び出しで Json として応答を取得できます。
これが私のSendRequestメソッドです
public class RestClient{ private static string JSON_ERROR = "error"; private string SendRequest(HttpWebRequest request, string queryParams, string token) { HttpWebResponse response = null; if(token != null) { request.Headers.Add("Authorization", "Bearer " + token); } request.ContentType = "application/json"; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException wex) { if (wex.Response == null) return JSON_ERROR; using (var errorResponse = (HttpWebResponse)wex.Response) { using (var reader = new StreamReader(errorResponse.GetResponseStream())) { return reader.ReadToEnd(); //expected error from JSON } } } var responseVal = new StreamReader(stream: response.GetResponseStream()).ReadToEnd(); return responseVal; } } Here is my GET and POST methods public string IsGet(string baseURL, string basePath, string queryParams, string token) { var request = (HttpWebRequest)WebRequest.Create(baseURL+basePath+queryParams); request.Method = "GET"; return SendRequest(request, queryParams, token); } public string IsPost(string baseURL, string basePath, string queryParams, string json, string token) { var request = (HttpWebRequest)WebRequest.Create(baseURL+basePath+queryParams); request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("Authorization", "Bearer " + token); byte[] postBytes = Encoding.ASCII.GetBytes(json); request.ContentLength = postBytes.Length; var requestStream = request.GetRequestStream(); requestStream.Write(postBytes, 0, postBytes.Length); requestStream.Close(); return SendRequest(request, queryParams, token); }
私が試したこと:
次の解決策を試しましたが、GET または POST 呼び出しで応答を取得しようとすると、null になります。
private HttpWebResponse SendRequest(HttpWebRequest request, string queryParams, string token) { HttpWebResponse response = null; if(token != null) { request.Headers.Add("Authorization", "Bearer " + token); } request.ContentType = "application/json"; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException wex) { if (wex.Response == null) //return JSON_ERROR; using (var errorResponse = (HttpWebResponse)wex.Response) { using (var reader = new StreamReader(errorResponse.GetResponseStream())) { //return reader.ReadToEnd(); //expected error from JSON } } } //response.GetResponseStream(); var responseVal = new StreamReader(stream: response.GetResponseStream()).ReadToEnd(); var json = JsonConvert.DeserializeObject(responseVal); return json; }
解決策 1
「理由」を完全に理解しているかどうかはわかりませんが、質問が表現されているように、これがそのままの場合、文字列が返されます
private string SendRequest(HttpWebRequest request, string queryParams, string token) { ... return someString; }
それからこれ
private HttpWebResponse SendRequest(HttpWebRequest request, string queryParams, string token) { HttpWebResponse response ... return response; }
あなたが要求したことを行います….それがあなたの望むものでない場合は、元の質問を変更してください。「解決策」に回答を投稿しないでください
[ad_2]
コメント