Board logo

標題: WebService [打印本頁]

作者: ray    時間: 2012-11-16 18:48     標題: WebService

http://ray.myweb999.com/download/ksoap2.jar
作者: ray    時間: 2012-11-16 19:04

http://www.webserviceX.NET/
http://www.webservicex.net/stockquote.asmx
作者: ray    時間: 2012-11-16 19:15

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:layout_width="match_parent"
  3.     android:layout_height="wrap_content"
  4.     android:gravity="center"
  5.     android:orientation="vertical" >

  6. <TextView  
  7.     android:layout_width="wrap_content"
  8.     android:layout_height="wrap_content"
  9.     android:textSize="25px"
  10.     android:text="美股價格 Web Service"
  11.     />

  12. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  13.     android:layout_width="match_parent"
  14.     android:layout_height="wrap_content"
  15.     android:gravity="center"
  16.     android:orientation="horizontal" >

  17. <TextView
  18.     android:layout_width="wrap_content"
  19.     android:layout_height="wrap_content"
  20.     android:text="股票代碼:" />

  21. <EditText
  22.     android:id="@+id/symbleTxt"
  23.     android:layout_width="fill_parent"
  24.     android:layout_height="wrap_content"
  25.     android:text="" />

  26. </LinearLayout>

  27. <Button
  28.     android:id="@+id/getBtn"
  29.     android:layout_width="fill_parent"
  30.     android:layout_height="wrap_content"
  31.     android:text="取價" />

  32. <TextView
  33.     android:id="@+id/resultTxt"
  34.     android:layout_width="fill_parent"
  35.     android:layout_height="wrap_content"
  36.     android:text="" />
  37.    
  38. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-16 19:48

  1. @Override
  2.     public void onCreate(Bundle savedInstanceState) {
  3.         super.onCreate(savedInstanceState);
  4.         setContentView(R.layout.activity_main);
  5.         View btn = this.findViewById(R.id.getBtn);
  6.         btn.setOnClickListener(this);
  7.         symbleTxt = (EditText)this.findViewById(R.id.symbleTxt);
  8.         resultTxt = (TextView)this.findViewById(R.id.resultTxt);
  9.     }
複製代碼

作者: ray    時間: 2012-11-16 20:02

  1. public void onClick(View v)
  2.         {
  3.                 // TODO Auto-generated method stub
  4.                 if(v.getId() == R.id.getBtn)
  5.                 {
  6.                         resultTxt.setText(getPrice(symbleTxt.getText().toString()));
  7.                 }
  8.         }
複製代碼

作者: ray    時間: 2012-11-16 20:21

本帖最後由 ray 於 2012-11-16 20:24 編輯
  1.         protected String getPrice(String ss)
  2.         {
  3.                 String info = "";
  4.                
  5.                 SoapObject request = new SoapObject(NAMESPACE,METHOD);
  6.                 PropertyInfo symbleProp = new PropertyInfo();
  7.                 symbleProp.setName("symbol");
  8.                 symbleProp.setValue(ss);
  9.                 symbleProp.setType(String.class);
  10.                 request.addProperty(symbleProp);
  11.                 return info;
  12.         }
複製代碼

作者: ray    時間: 2012-11-16 20:26

  1. package com.example.mywebservice;

  2. import org.ksoap2.serialization.PropertyInfo;
  3. import org.ksoap2.serialization.SoapObject;

  4. import android.os.Bundle;
  5. import android.app.Activity;
  6. import android.view.Menu;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.EditText;
  10. import android.widget.TextView;

  11. public class MainActivity extends Activity implements OnClickListener
  12. {
  13.         private final String NAMESPACE = "http://www.webserviceX.NET/";
  14.         private final String URL = "http://www.webservicex.net/stockquote.asmx";
  15.         private final String METHOD = "GetQuote";
  16.        
  17.         EditText symbolTxt;
  18.         TextView resultTxt;
  19.        
  20.     @Override
  21.     public void onCreate(Bundle savedInstanceState) {
  22.         super.onCreate(savedInstanceState);
  23.         setContentView(R.layout.activity_main);
  24.         View btn = this.findViewById(R.id.getBtn);
  25.         btn.setOnClickListener(this);
  26.         symbolTxt = (EditText)this.findViewById(R.id.symbolTxt);
  27.         resultTxt = (TextView)this.findViewById(R.id.resultTxt);
  28.     }

  29.     @Override
  30.     public boolean onCreateOptionsMenu(Menu menu){
  31.         getMenuInflater().inflate(R.menu.activity_main, menu);
  32.         return true;
  33.     }

  34.         public void onClick(View v)
  35.         {
  36.                 // TODO Auto-generated method stub
  37.                 if(v.getId() == R.id.getBtn)
  38.                 {
  39.                         resultTxt.setText(getPrice(symbolTxt.getText().toString()));
  40.                 }
  41.         }
  42.        
  43.         protected String getPrice(String ss)
  44.         {
  45.                 String info = "";
  46.                
  47.                 SoapObject request = new SoapObject(NAMESPACE,METHOD);
  48.                 PropertyInfo symbolProp = new PropertyInfo();
  49.                 symbolProp.setName("symbol");
  50.                 symbolProp.setValue(ss);
  51.                 symbolProp.setType(String.class);
  52.                 request.addProperty(symbolProp);
  53.                 return info;
  54.         }
  55. }
複製代碼

作者: ray    時間: 2012-11-16 20:26

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:layout_width="match_parent"
  3.     android:layout_height="wrap_content"
  4.     android:gravity="center"
  5.     android:orientation="vertical" >

  6. <TextView  
  7.     android:layout_width="wrap_content"
  8.     android:layout_height="wrap_content"
  9.     android:textSize="25px"
  10.     android:text="美股價格 Web Service"
  11.     />

  12. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  13.     android:layout_width="match_parent"
  14.     android:layout_height="wrap_content"
  15.     android:gravity="center"
  16.     android:orientation="horizontal" >

  17. <TextView
  18.     android:layout_width="wrap_content"
  19.     android:layout_height="wrap_content"
  20.     android:text="股票代碼:" />

  21. <EditText
  22.     android:id="@+id/symbolTxt"
  23.     android:layout_width="fill_parent"
  24.     android:layout_height="wrap_content"
  25.     android:text="" />

  26. </LinearLayout>

  27. <Button
  28.     android:id="@+id/getBtn"
  29.     android:layout_width="fill_parent"
  30.     android:layout_height="wrap_content"
  31.     android:text="取價" />

  32. <TextView
  33.     android:id="@+id/resultTxt"
  34.     android:layout_width="fill_parent"
  35.     android:layout_height="wrap_content"
  36.     android:text="" />
  37.    
  38. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-16 20:33

  1. SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
  2.                 envelop.dotNet = true;
  3.                 envelop.setOutputSoapObject(request);
複製代碼

作者: ray    時間: 2012-11-16 20:58

  1. SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
  2.                         String res = response.toString();
複製代碼

作者: ray    時間: 2012-11-16 21:16

  1. String parseXML(String xml,String pattern)
  2.         {
  3.                 String start = "<"+pattern+">";
  4.                 String end = "</"+pattern+">";
  5.                 return xml.substring(xml.indexOf(start)+start.length(),xml.indexOf(end));
  6.         }
複製代碼

作者: ray    時間: 2012-11-16 21:18

  1. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
複製代碼

作者: ray    時間: 2012-11-16 21:31

  1. info = "公司名稱:" + parseXML(res,"Name") + "\n";
  2.                         info += "價格時間:" + parseXML(res,"Date") + " " + parseXML(res,"Time") + "\n";
  3.                         info += "目前價格:" + parseXML(res,"Last") + "\n";
  4.                         info += "昨天收盤:" + parseXML(res,"PreviousClose") + "\n";
  5.                         info += "今天開盤:" + parseXML(res,"Open") + "\n";
  6.                         info += "今天最高:" + parseXML(res,"High") + "\n";
  7.                         info += "今天最低:" + parseXML(res,"Low") + "\n";
  8.                         info += "張跌金額:" + parseXML(res,"Change") + "\n";
  9.                         info += "張跌比率:" + parseXML(res,"PercentageChange") + "\n";
複製代碼

作者: ray    時間: 2012-11-19 18:35

[attach]632[/attach]




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2