以下のように、AndroidアプリケーションのWebサービスクライアント用のコードであるWebサービスを作成しようとしています。
String SOAP_ACTION = "";
String METHOD_NAME = "operation1";
String NAMESPACE = "http://service.livebackup.com/";
String URL = "http://192.168.1.3:8084/test/webService?wsdl";
Button signin;
Thread t;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
signin = (Button) findViewById(R.id.btn_sign_in);
signin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showDialog(0);
t=new Thread() {
public void run() {
tryLogin();
}
};
t.start();
}
});
}
private void tryLogin() {
// TODO Auto-generated method stub
EditText etxt_user = (EditText) findViewById(R.id.txt_username);
EditText etxt_pass = (EditText) findViewById(R.id.txt_password);
String username = etxt_user.getText().toString();
String password = etxt_pass.getText().toString();
callWebService(username,password);
}
private void callWebService(String username, String password) {
// TODO Auto-generated method stub
//String result = "ishan";
try {
int no=2;
SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
PropertyInfo p1 = new PropertyInfo();
Check C = new Check();//use check KvmSerializable{
C.UserName=username;
C.PassWord=password;
p1.setName("C");
p1.setValue(C);
p1.setType(C.getClass());
request.addProperty(p1);
SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=false;
envelope.setOutputSoapObject(request);
androidHttpTransport.call(SOAP_ACTION, envelope);
Log.v("Ok","wait for response");
Object results =(Object)envelope.getResponse();
Log.v("Ok","Connection has response object" +results);
Log.v("Ok","jj");
//to get the data String resultData=result.getProperty(0).toString();
String temp = results.toString();
Log.v("Ok","Connection has response" +temp);
}
catch (Exception e) {
// TODO: handle exception
System.out.println("Error:" +e.getClass().getName()+":"+e.getMessage());
}
}
次のようにクラスを確認してください。
public class Check implements KvmSerializable{
public String UserName;
public String PassWord;
public Check(){}
public Check(String userName, String passWord) {
super();
UserName = userName;
PassWord = passWord;
}
@Override
public Object getProperty(int arg0) {
// TODO Auto-generated method stub
switch(arg0)
{
case 0:
return UserName;
case 1:
return PassWord;
}
return null;
}
@Override
public int getPropertyCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) {
// TODO Auto-generated method stub
switch(index)
{
case 0:
info.type = PropertyInfo.INTEGER_CLASS;
info.name = "UserName";
break;
case 1:
info.type = PropertyInfo.INTEGER_CLASS;
info.name = "PassWord";
break;
default:break;
}
}
@Override
public void setProperty(int index, Object value) {
// TODO Auto-generated method stub
switch(index)
{
case 0:
UserName = value.toString();
break;
case 1:
PassWord = value.toString();
break;
default:
break;
}
}
}
私の問題:サーバー側でNet Beans jax-wsを使用していますが、androidws-clientからのユーザー名とパスワードの要求を処理する方法
request.addproperty( "userName"、username);だけで完了しました。
plz、help ..