どのようにファイルにjsonの応答をダンプしますか?ファイルにjsonの応答をダンプします
基本的に私は直接apiを打つことができないので、デバッグの理由から私はホスティングサーバー上のファイルに応答をダンプし、そこで私はそれを扱うことができるファイルをダウンロードしたいと思います。
どのようにファイルにjsonの応答をダンプしますか?ファイルにjsonの応答をダンプします
基本的に私は直接apiを打つことができないので、デバッグの理由から私はホスティングサーバー上のファイルに応答をダンプし、そこで私はそれを扱うことができるファイルをダウンロードしたいと思います。
に登録あなたのファイルイブあなたの回答を得るために fileNameにタイムスタンプを追加できないようにするためです。
//This will (atleast every second) create a unique filename
string filePath = [email protected]"C:\temp\Response{DateTime.Now.ToString("ddMMyyyyHHmmss")}";
編集:
あなたのファイルはあなたが以下のように使用することができ、あなたのbin\Debug
フォルダに転送されていることを確認するには、次の
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Response{DateTime.Now.ToString("ddMMyyyyHHmmss")}");
ありがとうございました、ここで愚かな質問がありますが、ウェブサイトがホスティング会社のWebサーバーでホストされている場合は、どのようにファイルパスを作成しますか?それはFile.WriteAllText( "Response.json"、result)ではありません。その後、ファイルはデバッグフォルダに置かれますか? – Tom
@Tom yeah私はそう思う:Dあなたのアプリが走っている場所でなければならない。それを試してみてください:D –
@Tomあなたはそれを動作させましたか? –
カスタムDelegatingHandler
定義することができます。これは上書きされます
[... //Do your WebRequest...]
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
//Here you got the JSON as string:
var result = streamReader.ReadToEnd()
// Write the text to a new file named "Response.json".
File.WriteAllText(@"C:\temp\Response.json", result);
return result;
}
注:
public class LogResponseHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken);
var responseString = await response.Content.ReadAsStringAsync();
//log response string to file
return response;
}
}
を単純にこれを行うファイルにダンプするにはHttpConfiguration
config.MessageHandlers.Add(new LogResponseHandler());
Thanks Aleksey、私はDelegatingHandlerと一緒に働いたことはありません – Tom
これはWeb APIパイプラインに注入する必要があり、**このAPIのすべての**応答を記録します。 –
これは簡潔な例を提供する必要があり、サイトにどのようにではありませんあなたの問題のエラーメッセージとデバッグコードを解決するために、すでに試したことを! – rogue39nin