android调用WCF(多参数传递)

来源:互联网 发布:js window.onload之类 编辑:程序博客网 时间:2024/04/29 05:20

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_URIString 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());};};@Overrideprotected 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() {@Overridepublic 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 hereif (isValid) {// POST request to <service>/SaveVehicleHttpPost 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 serviceDefaultHttpClient httpClient = new DefaultHttpClient();HttpResponse response = httpClient.execute(request);// response.getStatusLine().getStatusCode()// response.getLog.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();}}}



0 0