如何在android中将值保存到webservice中?
问题描述:
我无法将值保存到我在.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());
}
}
}
谁能告诉我哪里做错了..提前
感谢..
答
这里是解决方案, 在这个例子中,我使用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;
}
}
答
服务器无法处理请求--->不能将值null 插入'Name'列'MyWorldApp.dbo.tbl_UserRegistration'列中;列 不允许nulls.INSERT失败。该语句已终止。
以上是您的错误。 您在字段名中插入空值和名称设置为不接受空值
- 所以修改名称字段数据库表
- 或强制添加NOT NULL值
编辑
你的方法张贴值的web服务发送空值到服务器
答
而不是
Object result = (Object)envelope.getResponse();
试试这个
SoapObject response= (SoapObject) envelope.bodyIn;
ķ感谢ü...我怎么能retrive从http://113.193.181.53/MyWorldApp/Service1.asmx?op=getUserDetailsByUserName我存储的值 – NareshRavva 2012-01-11 10:38:55
我无法做到这一点,因为它轮到你做一些事情......如果你有任何问题,然后告诉我 – 2012-01-11 12:27:24