• web service上传参数代码实例


    web service上传参数代码实例

    这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意:

    第一,命名空间:与服务器一致,命名空间后缀千万不要加“/”;

    第二,方法名:与服务器一致;

    第三,url:就是服务器地址不加后面的?=。。。;

    代码如下:

    • package com.example.web;
    • import java.util.ArrayList;
    • import org.ksoap2.SoapEnvelope;
    • import org.ksoap2.serialization.SoapObject;
    • import org.ksoap2.serialization.SoapSerializationEnvelope;
    • import org.ksoap2.transport.HttpTransportSE;
    • import android.annotation.SuppressLint;
    • import android.annotation.TargetApi;
    • import android.app.Activity;
    • import android.os.Build;
    • import android.os.Bundle;
    • import android.os.StrictMode;
    • import android.view.View;
    • import android.view.View.OnClickListener;
    • import android.widget.Button;
    • import android.widget.TextView;
    • //@SuppressLint("NewApi") 
    • @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") public class MainActivity extends Activity  {
    •  
    •    
    •     public static final String TAG ="webService_pj";
    •     Button button;
    •     TextView resultView;
    •     String result ;
    •     String str_userno = "144";
    •    
    •   //  @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") 
    •    
    •    
    •    
    •    
    •     @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") @Override
    •     protected void onCreate(Bundle savedInstanceState) {
    •         super.onCreate(savedInstanceState);
    •         setContentView(R.layout.activity_main);
    •     // 强制在UI线程中操作
    •        
    •         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
    •         .detectDiskReads() 
    •         .detectDiskWrites() 
    •         .detectNetwork()
    •         .penaltyLog() 
    •         .build()); 
    •         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 
    •         .detectLeakedSqlLiteObjects() 
    •         .detectLeakedClosableObjects() 
    •         .penaltyLog() 
    •         .penaltyDeath() 
    •         .build());
    •         resultView = (TextView)findViewById(R.id.TextView);
    •        
    •         button = (Button) findViewById(R.id.butt);
    •         button.setOnClickListener(new OnClickListener() {
    • @Override
    • public void onClick(View arg0) {
    • // TODO Auto-generated method stub
    • String nameSpace = "";  
    •     // 调用的方法名称  
    •     String methodName = "";  
    •     String url = "http://i.cnblogs.com/EditPosts.aspx";
    •     String soapAction = "nameSpacemethodName"; 
    • ArrayList<String> params= new ArrayList<String>();
    • params.add("str_userno");
    •     params.add("str_sex");
    • params.add("str_telephone");
    • params.add("str_pwd");
    • ArrayList<String> vals= new ArrayList<String>();
    • vals.add("33");
    • vals.add("1");
    • vals.add("23442");
    • vals.add("1443");
    • new MyThread(nameSpace,methodName,url,soapAction, params,vals).start();
    • //将WebService返回的结果显示在TextView中
    • resultView.setText("dfsd"+getResult());
    • }
    • });
    •        
    •        
    •     }
    •    
    •    
    •    
    •    
    •    
    •    
    • public String getResult(){
    •        
    •         return result;
    •      
    •         }
    •     private class MyThread extends Thread
    •  
    •     {
    •  
    • private String nameSpace;
    •  
    •     private String methodName;
    •  
    •     private String soapAction;
    • private String url;
    • private ArrayList<String> params;
    • private ArrayList<String> vals;
    •     public MyThread(String nameSpace,  String methodName,
    •     String url, String soapAction,ArrayList<String> params,ArrayList<String> vals){
    •  
    •     this.nameSpace = nameSpace;
    •     this.methodName = methodName;
    •    
    •     this.url = url;
    •    
    •     this.soapAction = soapAction;
    •    
    •     this.params = params;
    •    
    •     this.vals = vals;
    •    
    •     }
    •      
    •  
    •     @Override
    •     public void run()
    •     {
    •    
    •  
    •     result= getRemoteInfo(nameSpace, methodName, url,
    •  
    •     soapAction,params,vals);
    •     }
    •     }
    •    
    •     public String getRemoteInfo(String nameSpace,  String methodName,
    •  
    •     String url, String soapAction,ArrayList<String> params,ArrayList<String> vals) {
    •  
    •     // 指定WebService的命名空间和调用的方法名
    •     SoapObject rpc = new SoapObject(nameSpace, methodName);
    •     //设置需调用WebService接口需要传入的两个参数mobileCode、userId
    •  
    • //    
    •   //for (int i = 0; i < params.size();i++) {
    •    
    •     rpc.addProperty(params.get(0),vals.get(0));
    •     rpc.addProperty(params.get(1),vals.get(1));
    •     rpc.addProperty(params.get(2),vals.get(2));
    •     rpc.addProperty(params.get(3),vals.get(3));
    •   System.out.println(rpc);
    •    
    • //    rpc.addProperty("Content-Type", "text/xml; charset=utf-8"); 
    • //    rpc.addProperty("Content-Length", "length");
    •   //}
    •    
    •     //生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
    •    
    •     SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER10);
    •  
    •     envelope.bodyOut = rpc;
    •  
    •     envelope.setOutputSoapObject(rpc);
    •   // envelope.bodyIn = rpc;
    •     envelope.dotNet = true; 
    • //    HttpTransportSE transport = new HttpTransportSE(url);
    •     HttpTransportSE transport=new HttpTransportSE(url);//20秒限时
    •     try {
    •     // 调用WebService
    •    
    •     transport.call(soapAction,envelope);
    •     System.out.println("haha");
    •     if(envelope.getResponse()!=null){
    •    
    •     SoapObject object = (SoapObject)envelope.bodyIn;
    •    
    •      
    •         if (object != null) {
    •         // 获取返回的结果
    •         result =object.getProperty(0).toString();
    •         System.out.println("faf"+result);
    •        
    •         }
    •    
    •     }
    •  
    •     } catch (Exception e) {
    •  
    •     e.printStackTrace();
    •     System.out.println("yghu"+result);
    •     }
    •      
    •     // 获取返回的数据    
    •     return result;
    •  
    •     }
    • }

    写的不好之处希望大神指点下,赶鸡不进,嘿嘿,希望对大家有用!

  • 相关阅读:
    javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp
    Java 向上造型
    java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testUpdate], {ExactMatcher:fDisplayName=testUpdate(com.zjf.spring.jdbc.JDBCTest)],
    The prefix "p" for attribute "p:message" associated with an element type "bean"
    SVN the working copy needs to be upgraded svn
    Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/cx f/tools/wsdlto/WSDLToJava : Unsupported major.minor version 52.0
    git 403
    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '[<_UIFeedbackParameters 0x1d4442e50> setNilValueForKey]: could not set nil as the value for the key rate.'
    Xcode无法退出,报错提示 The document “xxx.h” could not be saved. The file doesn’t exist.
    iOS打包上传ipa文件时,报错<ERROR ITMS-90096: "Your binary is not optimized for iPhone 5
  • 原文地址:https://www.cnblogs.com/sunzan/p/4685135.html
Copyright © 2020-2023  润新知