2017-10-08 1 views
0

Ich teste die Revulytics Reporting-API und versuche, einen erweiterten Event-Tracking-Bericht zu erstellen, wie unter http://devzone.revulytics.com/docs/API/event-tracking-advanced-reports.html#. Ich verwende C# und die WebClient-Klasse, um die HTTP-Abfrage (und Newtonsoft für JSON Parsing und Formatierung) zu senden. Obwohl mein JSON ordnungsgemäß formatiert ist und der Client ordnungsgemäß konfiguriert ist, erhalte ich eine nicht behandelte Ausnahme. Codebeispiel unten:Revulytics-Event-Tracking gibt die Bad Request zurück

RuiAdvancedRequest advancedRequest = new RuiAdvancedRequest(); 
    DateTime startDate = DateTime.Now.AddDays(-180); 
    advancedRequest.user = textUser.Text; 
    advancedRequest.sessionId = authResponseObj.sessionId; 
    advancedRequest.productId = Convert.ToInt64(textProductId.Text); 
    advancedRequest.startDate = startDate.ToString("yyyy-MM-dd"); 
    advancedRequest.stopDate = DateTime.Now.Date.ToString("yyyy-MM-dd"); 
    advancedRequest.events = list; 
    string serializedRequest = JsonConvert.SerializeObject(advancedRequest); 
    string reportResult = client.UploadString(featureuUsageURL, "POST", serializedRequest); 

Die letzte Zeile nicht mit: Eine nicht behandelte Ausnahme des Typs ‚System.Net.WebException‘ aufgetreten in System.dll Zusätzliche Informationen: Der Remoteserver hat einen Fehler zurückgegeben: (400) Bad Request . Gibt es eine Möglichkeit, mehr Fehlerinformationen vom Revulytics-Server zu erhalten?

Antwort

0

Versuchen Sie, die Ausnahme zu behandeln, und sehen Sie sich den Fehlerantwort-Stream an. Ich habe einen ähnlichen Fehler: obwohl der JSON richtig formatiert wurde, wenn die Werte der Parameter aus Sicht des Servers nicht in Ordnung sind, gibt es immer noch diesen Fehler zurück - der ist derselbe, als ob der JSON nicht richtig formatiert wäre.

try 
{ 
    reportResult = client.UploadString(featureuUsageURL, "POST", serializedRequest); 
} 
catch (WebException error) 
{ 
    string responseText; 
    var responseStream = error.Response?.GetResponseStream(); 
    if (responseStream != null) 
    { 
    using (var reader = new StreamReader(responseStream)) 
    { 
responseText = reader.ReadToEnd(); 
MessageBox.Show(responseText); 
}  

this helps