android调用WCF(多参数传递)

1,使用的交互方式是json格式,返回与提交参数都是json字符串。

2,对于多个参数的提交注意点:必须封装在一个jsonobject内如:{"param1":{"id":1,"name":"kee"},"param2":{"id":2,"name":"temp"}},此处提交的参数对应的函数

形式fun(Person param1,Person param2)。封装的key值,是函数参数的名称。这也是摸搜了好久,验证成功的啦。


在.net WCF端接口函数   

GetPersonInfoDetailByStudent(ServiceRequest serviceRequest,Student student1,Student student2)


 

下面是Android端简单的测试代码:

package com.kee.first;

import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONObject;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import android.view.View;
import android.view.View.OnClickListener;

import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

// String SERVICE_URI

String SERVICE_URI = "http://xx.214.21.xx:9123/PatrolTerminalServiceAD/GetPersonInfoDetailByStudent";
TextView result;

@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {

result.setText(msg.obj.toString());

};
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
result = (TextView) findViewById(R.id.btn_result);

Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

new Thread() {
public void run() {

Log.d("kee", "run...");

MainActivity.this.onBtnClick();

}
}.start();

}
});
}

public void onBtnClick() {

try {

Log.d("kee", "onSave...");

boolean isValid = true;

// Data validation goes here

if (isValid) {

// POST request to <service>/SaveVehicle
HttpPost request = new HttpPost(SERVICE_URI);

JSONObject obj = new JSONObject();
// obj.put("str1", "aaa");
// obj.put("str2","bbb");

// HttpGet request = new HttpGet(SERVICE_URI);
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");

JSONObject stu = new JSONObject();
stu.put("Id", "111");
stu.put("Number", 3333);

JSONObject sRequest = new JSONObject();
sRequest.put("IdentifyHash", 111);
sRequest.put("RequesterID",
"4255C27C-A444-4D65-8FFB-B04379321B35");
sRequest.put("RequesterIP", "");
sRequest.put("ValidationIP", "");
sRequest.put("Exclusive", "");

obj.put("serviceRequest", sRequest);
obj.put("student1", stu);
obj.put("student2", stu);

StringEntity entity = new StringEntity(obj.toString());
Log.d("kee", obj.toString());
request.setEntity(entity);

// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);

// response.getStatusLine().getStatusCode()

// response.get

Log.d("kee", response.getStatusLine().getStatusCode() + "");
// String result = response.getEntity().toString();

char[] buffer = new char[(int) response.getEntity()
.getContentLength()];
InputStream stream = response.getEntity().getContent();
InputStreamReader reader = new InputStreamReader(stream);
reader.read(buffer);
stream.close();

Message msg = handler.obtainMessage();
String result = new String(buffer, 0, buffer.length);
Log.d("kee result", result);
msg.obj = result;

msg.sendToTarget();

// Reload plate numbers
// refreshVehicles();
}

} catch (Exception e) {
e.printStackTrace();
}
}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值