2016-04-04 6 views
0

In meinem neuesten Projekt möchte ich einen Benutzernamen und ein Passwort auf einem Android-Telefon eingeben, im JSON-Format speichern und an einen ASP.NET MVC-Server senden, der Konfigurationsdaten in einem neuen JSON zurückgeben soll.Wie übergebe ich JSON von Android zum MVC-Controller?

Was ich bisher haben:

Android (Teilcode):

String json = "{\"x\": \"val1\",\"y\":\"val2\"}"; 
URL url = new URL("http://xxxxx/Home/GetData"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setConnectTimeout(5000); 
conn.setReadTimeout(10000); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/json");  // have tried without this 
conn.setRequestProperty("Content-Length", json.getBytes().length + ""); 
conn.setDoOutput(true); 

os = conn.getOutputStream(); 
os.write(json.getBytes("UTF-8")); 
os.close(); 

conn.connect(); 

Der JSON-String ist hier nur zum Testen.

MVC:

[HttpPost] 
public ActionResult GetData(String request) 
{ 
    Debug.WriteLine(request.Length); // not relevant to the question 

    var data = new { Name = "Test", Age = "39" }; 
    return Json(data); 
} 

Gibt JSON mit Testdaten.

Das String-Argument im MVC-Controller ist hier wahrscheinlich falsch. Ich habe versucht, z.B. byte [], aber am Ende habe ich immer NULL.

Jede Hilfe mit diesem oder Vorschläge für Alternativen ist willkommen!

Prost

Antwort

0

Wenn das ist, was an den Server gesendet hat wird:

{ 
    "x": "val1", 
    "y": "val2" 
} 

sollten Dann Paare diese Schlüssel/Wert reflektieren die Parameter-Methode. So etwas wie das:

public ActionResult GetData(string x, string y) 
+0

Was geschrieben wird eine Folge von Bytes aus der ursprünglichen Zeichenfolge. Mein mein Problem ist, wie man sie im Controller erhält (der über den Inhalt des json nicht weiß). – ludolover

+0

@ludolover: Ist der Inhalt der post-Anfrage wegen der "Bytes von der ursprünglichen Zeichenfolge" irgendwie anders? Wie sieht die tatsächliche Anfrage im Vergleich zum einfachen Senden von einfachem JSON im Anfragetext aus? Was werden Sie mit dieser Datenserver-Seite machen, dass der serverseitige Code die Struktur nicht kennt? – David

0

Dies wird durch alles passieren, was Sie im JSON posten. Prettu viel wie @ David aber, wenn Sie keine Ahnung haben, was sendt zum GetData sein

public ActionResult GetData() 
{ 
    foreach (var key in Request.Form.AllKeys) 
    { 
     //This will iterate through everything in your post data 
     var value = Request.Form[key]; 
    } 
} 
+0

Hehe :) Nun, ich bekomme immer noch ArgumentNullException ... Könnte mir ein Argument im Controller oder Parameter in der URL-Anfrage fehlen? Der Controller sollte in der Lage sein, die Daten im Hauptteil der Anfrage zu finden, oder? – ludolover

Verwandte Themen