2014-02-14 104 views
0

我想从我的android活动发送一个json对象到我的asp.net web服务,通​​过下面的代码。发送json对象到ASP.net C#从Android

//This is Category.java 

JSONObject json=new JSONObject(); 
try 
{ 
      CallSoap cs=new CallSoap(); 
    String name="Ramu"; 
    String username="[email protected]"; 
    String password="welcome"; 
    json.put("name", name); 
    json.put("username",username); 
    json.put("password", password); 
    String resp=cs.demo(json); // I need to send this json to my asp.net web server 
    Log.d("Response from server",resp); 
} 
catch(Exception ex) 
{ 
    ex.printStackTrace(); 
} 
//This is callsoap.java 

public String demo(JSONObject a) 
{ 
      public final String SOAP_ACTION5= "http://tempuri.org/demo"; 
      public final String OPERATION_NAME5= "demo"; 
      public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/"; 
      public final String SOAP_ADDRESS = "http://tn.selevanta.com/Convert.asmx" 

    SoapObject request=new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME5); 
    PropertyInfo pi=new PropertyInfo(); 
    pi.setName("a"); 
    pi.setValue(a); 
    pi.setType(JSONObject.class); 
    request.addProperty(pi); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 
    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); 
    Object response=null; 

    try 
    { 
     httpTransport.call(SOAP_ACTION5, envelope); 
     response = envelope.getResponse(); 
    } 
    catch(Exception ex) 
    { 
     response=ex.toString(); 
    } 
    //JSONArray JSONArray = null; 
    return response.toString(); 


} 

我不知道应该在服务器的我的Convert.cs文件中写什么代码。 我需要在名为demo的Convert.cs中编写一个函数。然后,我的android活动中的json对象应该被发送到Convert.cs中的这个演示函数。在我的Convert.cs文件中接收到json对象后,我需要从收到的json对象中解析出json数据。因此,json数据的名称,用户名,密码应该保存到我的sql服务器数据库中。 我知道将数据保存到sql server数据库的编码,但我不知道如何接收json对象到我的演示函数并解析json对象中可用的json数据。我还写了另一个Person.cs文件,其中包含以下数据。

public class Person 
{ 

    public string name { get; set; } 
    public string username { get; set; } 
    public string password { get; set; } 

} 

这是一个Covert.cs代码的部分文件

[System.Web.Services.WebMethod()] 
public String demo(//dont know how to receive the json object here) 
{ 
    // I don't know the Code for processing the json object received. 

    return "success"; 
} 

回答

0

可以使用JavaScriptSerializer在这里做所有的辛勤工作的你,看下面的例子。

[System.Web.Services.WebMethod()] 
public String demo(string personInfo) 
{ 
    var jss = new System.Web.Script.Serialization.JavaScriptSerializer(); 
    var aPerson = jss.Deserialize<Person>(personInfo); 
+0

我有疑问。我正在发送一个来自android&json对象的demo,你正在用一个字符串接受它。这可能吗? – njnjnj

+0

这不起作用。我已经测试过它...... – njnjnj

+0

在var jss这一行添加一个断点,并在该点发布personInfo的内容。 JSON是基于字符串的数据格式,这就是为什么接受JSON参数的正确方式是字符串。 – JonMac1374