2016-07-20 8 views
0

どのようにファイルにjsonの応答をダンプしますか?ファイルにjsonの応答をダンプします

基本的に私は直接apiを打つことができないので、デバッグの理由から私はホスティングサーバー上のファイルに応答をダンプし、そこで私はそれを扱うことができるファイルをダウンロードしたいと思います。

+1

これは簡潔な例を提供する必要があり、サイトにどのようにではありませんあなたの問題のエラーメッセージとデバッグコードを解決するために、すでに試したことを! – rogue39nin

答えて

1

に登録あなたのファイルイブあなたの回答を得るために 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")}"); 
+0

ありがとうございました、ここで愚かな質問がありますが、ウェブサイトがホスティング会社のWebサーバーでホストされている場合は、どのようにファイルパスを作成しますか?それはFile.WriteAllText( "Response.json"、result)ではありません。その後、ファイルはデバッグフォルダに置かれますか? – Tom

+0

@Tom yeah私はそう思う:Dあなたのアプリが走っている場所でなければならない。それを試してみてください:D –

+0

@Tomあなたはそれを動作させましたか? –

1

カスタム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()); 
+0

Thanks Aleksey、私はDelegatingHandlerと一緒に働いたことはありません – Tom

+0

これはWeb APIパイプラインに注入する必要があり、**このAPIのすべての**応答を記録します。 –