2012-01-11 57 views
0

我无法将值保存到我在.net中的webserver。我已经使用下面的代码,但我在emulator..ie得到了跟随误差,如何在android中将值保存到webservice中?

Server was unable to process request---> cannot insert the value null into column 'Name', table 'MyWorldApp.dbo.tbl_UserRegistration';column doesnot allow nulls.INSERT fails. The Statement has been terminated. 

我有使用下面的链接:http://113.193.181.53/MyWorldApp/Service1.asmx?op=InsertUsertRegistrationDetails

我的代码是:

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import android.app.*; 
    import android.os.*; 
    import android.util.Log; 
    import android.widget.TextView; 

    public class MyworldActivity extends Activity { 
     /** Called when the activity is first created. */ 

     private static final String SOAP_ACTION = "http://localhost/service1/InsertUsertRegistrationDetails"; 

     private static final String METHOD_NAME = "POST"; 

     private static final String NAMESPACE = "http://localhost/service1"; 
     private static final String URL = "http://113.193.181.53/MyWorldApp/Service1.asmx"; 



     TextView tv; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      tv=(TextView)findViewById(R.id.text1); 
      call(); 

     } 

     public void call() 
     { 
      try { 

       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

       request.addProperty("Name", "'Rajapandian'"); 
       request.addProperty("UserName", "Rajapandian"); 
       request.addProperty("Password", "123"); 
       request.addProperty("MobileNumber", "456"); 
       request.addProperty("EmailID", "[email protected]"); 
       request.addProperty("image", "http://www.thehindu.com/multimedia/dynamic/00880/INDIA_CORRUPTION_PR_880168f.jpg"); 
       Log.e("success","success"); 
       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
       envelope.dotNet=true; 
       envelope.setOutputSoapObject(request); 

       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
       androidHttpTransport.call(SOAP_ACTION, envelope); 

       Object result = (Object)envelope.getResponse(); 

       tv.setText(result.toString()); 
      } catch (Exception e) { 
       tv.setText(e.getMessage()); 
       } 
     } 
    } 

谁能告诉我哪里做错了..提前

感谢..

回答

0

这里是解决方案, 在这个例子中,我使用get method.just通过您的变量中的URL字符串

String url = "http://113.193.181.53/MyWorldApp/Service1.asmx/InsertUsertRegistrationDetails?Name=string&UserName=string&Password=string&MobileNumber=string&EmailID=string&image=string" 

URL sourceUrl = new URL(url); 
      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser sp = spf.newSAXParser(); 
      XMLReader xr = sp.getXMLReader(); 
      Handler1 dataHandler = new Handler1(); 
      xr.setContentHandler(dataHandler); 
      xr.parse(new InputSource(sourceUrl.openStream())); 
      Dataset dataset = dataHandler.getParsednewJobdtl_DataSet(); 

数据集:

package com.RecordingApp; 

public class AuthDataset { 



    private String booleanx = null; 

    public void setbooleanx (String booleanx) { 
     this.booleanx = booleanx ; 
    } 

    public String getbooleanx() { 
     return booleanx ; 
    } 


} 

处理程序:

package com.RecordingApp; 

import java.util.ArrayList; 

import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

public class AuthHandler extends DefaultHandler { 
    boolean int1 = false; 

    ArrayList ar1 = new ArrayList(); 

    ArrayList br1 = new ArrayList(); 

    private AuthDataset mysitelist = new AuthDataset(); 

    public AuthDataset getParsednewJobdtl_DataSet() { 
     return this.mysitelist; 
    } 

    public void startDocument() throws SAXException { 
     this.mysitelist = new AuthDataset(); 
    } 

    @Override 
    public void endDocument() throws SAXException { 
    } 

    // ***********************Start Element******************** 
    @Override 
    public void startElement(String namespaceURI, String localName, 
      String qName, Attributes atts) throws SAXException { 
     if (localName.equals("boolean ")) { 
      this.int1 = true; 
     } 

    } 

    // ***********************End element******************** 
    @Override 
    public void endElement(String namespaceURI, String localName, String qName) 
      throws SAXException { 
     if (localName.equals("boolean ")) { 
      this.int1 = false; 

     } 
    } 

    // ***********************character******************** 
    @Override 
    public void characters(char ch[], int start, int length) { 
     if (this.int1) { 
      mysitelist.setbooleanx(new String(ch, start, length)); 
      ar1.add(new String(ch, start, length)); 
      setbooleanx (ar1); 

     } 

    } 

    public void setbooleanx (ArrayList ar1) { 
     this.br1 = ar1; 
    } 
    public ArrayList getbooleanx() { 

     return br1; 
    } 

} 
+0

ķ感谢ü...我怎么能retrive从http://113.193.181.53/MyWorldApp/Service1.asmx?op=getUserDetailsByUserName我存储的值 – NareshRavva 2012-01-11 10:38:55

+0

我无法做到这一点,因为它轮到你做一些事情......如果你有任何问题,然后告诉我 – 2012-01-11 12:27:24

0

服务器无法处理请求--->不能将值null 插入'Name'列'MyWorldApp.dbo.tbl_UserRegistration'列中;列 不允许nulls.INSERT失败。该语句已终止。

以上是您的错误。 您在字段名中插入空值和名称设置为不接受空值

  • 所以修改名称字段数据库表
  • 或强制添加NOT NULL值

编辑

你的方法张贴值的web服务发送空值到服务器

2

而不是

Object result = (Object)envelope.getResponse(); 

试试这个

SoapObject response= (SoapObject) envelope.bodyIn; 
相关问题