2016-07-20 3 views
0

как вы даете ответ json файлу?Дамп json-ответ на файл

В принципе, я не могу попасть непосредственно в api, поэтому по причинам отладки я хочу сбросить ответ на файл на сервере хостинга, а затем загрузить файл, где я могу работать с ним.

+1

Это не как сайт, который вы должны дать краткий пример за то, что вы уже пытались решить ваши сообщения об ошибках и код отладки! – rogue39nin

ответ

1

Чтобы просто сбросить в файл сделать это:

[... //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; 
} 

Примечание это приведет к перезаписи ваш файл накануне вы получите ответ. Чтобы предотвратить добавление метки времени в имя файла.

//This will (atleast every second) create a unique filename 
string filePath = [email protected]"C:\temp\Response{DateTime.Now.ToString("ddMMyyyyHHmmss")}"; 

Edit:

Чтобы ваши файлы передаются в папку bin\Debug вы можете использовать следующее:

string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Response{DateTime.Now.ToString("ddMMyyyyHHmmss")}"); 
+0

Спасибо Nudity, глупый вопрос здесь, но как бы вы отработали путь к файлу, если веб-сайт размещен на веб-сервере хостинговой компании? не будет ли это File.WriteAllText («Response.json», result); Затем файл будет помещен в папку отладки? – Tom

+0

@ То, что я думаю, так: D Должно быть место, где когда-либо работает ваше приложение. Просто проверьте это: D –

+0

@ У вас получилось работать? –

1

Вы можете определить пользовательские DelegatingHandler:

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

Спасибо, Алексей, я никогда не работал с DelegatingHandler – Tom

+0

Он должен быть введен в конвейер веб-api и будет записывать ** все ** ответы этого api. –

Смежные вопросы