Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone



Clound SSD Virtual Server

Android and Web Service

Android and Web Service สำหรับ Web Service เป็นช่องทางหนึ่งที่นิยมใช้สำหรับการแลกเปลี่ยนข้อมูลระหว่าง Server กับ Client หรือ Server กับ Server เหตุผลที่ Web Service ได้รับความนิยมก็คือ การที่ Web Service มีมาตรฐานที่ได้ออกแบบไว้สำหรับการเชื่อมต่อผ่าน SOAP Interface ของ WSDL เพาะฉะนั้นไม่ว่าจะพัฒนาโปรแกรมด้วยภาษาอะไรก็ตาม เมื่อใช้ Web Service เป็นตัวกลางในการแลกเปลี่ยนข้อมูล ก็จะทำให้จัดการกับข้อมูลต่าง ๆ นั้นมีประสิทธิภาพและตรงกับความต้องการ

Android and Web Service


พื้นฐานของ Web Service จะใช้ XML เป็นตัวกลางในการแลกเปลี่ยนข้อมูล โดยอาจจะทำการส่งค่า String หรือ JSON มาพร้อมกับ XML ซึ่งปัจจุบัน JSON จะได้รับความนิยมในการรับส่งข้อมูลซะมากกว่า แต่ JSON เหล่านี้ยังคงถูกส่งภายใต้ XML เช่นเดียวกัน

Basic Web Service


AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />

ในการเขียน Android เพื่อติดต่อกับ Internet จะต้องกำหนด Permission ในส่วนนี้ด้วยทุกครั้ง


ทดสอบการสร้าง Web Service และเรียก Web Service ด้วย Android

WebServiceServer.php
<?php
		require_once("lib/nusoap.php");
		 
		//Create a new soap server
		$server = new soap_server();
		 
		//Define our namespace
		$namespace = "https://www.thaicreate.com/android/WebServiceServer.php";
		$server->wsdl->schemaTargetNamespace = $namespace;
		 
		//Configure our WSDL
		$server->configureWSDL("HelloWorld");
		 
		// Register our method and argument parameters
        $varname = array(
                   'strName' => "xsd:string",
				   'strEmail' => "xsd:string"
        );
		$server->register('HelloWorld',$varname, array('return' => 'xsd:string'));
		 
		function HelloWorld($strName,$strEmail)
		{
			return "Hello, Khun ($strName , Your email : $strEmail)";
		}
		 
		// Get our posted data if the service is being consumed
		// otherwise leave this data blank.
		$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
		 
		// pass our posted data (or nothing) to the soap service
		$server->service($POST_DATA);
		exit(); 
?>

สร้าง Web Service ด้วย PHP โดยใช้ NuSoap (สามารถอ่านได้จากบทความของ PHP Web Service)

คำอธิบาย
เป็นการสร้าง Web Service แบบง่าย ๆ โดยมี method ชื่อว่า HelloWorld และรับค่า strName และ strEmail จากนั้นจะ Return ค่า Hello, Khun ($strName , Your email : $strEmail) กลับไปยัง Client

Web Service ถุกจัดเก็บไว้ที่
https://www.thaicreate.com/android/WebServiceServer.php


Android Project Web Service

ใน Android จะไม่มี Library ที่จะใช้สำหรับจัดการและติดต่อกับ Web Service ได้โดยตรง แต่จะมี Library ที่สามารถดาวน์โหลดมาใช้งานได้ฟรี โดยมีชื่อส่า KSOAP สามารถดาวน์โหลดได้จาก Link นี้

Download
http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2


ไฟล์ที่ได้ตะอยู่ในรูปแบบของ Jar ไฟล์ โดยเราจะต้องนำมา Import เข้าใน Project

Android Import Jar Library


Android and Web Service

ไฟล์ jar library ของ Web Service

Android and Web Service

ให้ Copy ไฟล์ไปไว้ใน Android Project โดยจัดเก็บไว้ที่ /lib/

Android and Web Service

คลิกขวาที่ Project -> Properties

Android and Web Service

คลิกที่ Java Build Path -> Add JARs ดูรูปภาพประกอบ








Android and Web Service

เลือกไฟล์ Library ที่อยู่ใน /lib/

Android and Web Service

แสดงรายการ jar ไฟล์ที่ถูก Import เข้ามาใน Project

Android and Web Service

เลือก OK


โครงสร้างของไฟล์ประกอบด้วย 2 ไฟล์คือ MainActivity.java, activity_main.xml

Android and Web Service

activity_main.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
   	<TableRow
      android:id="@+id/tableRow1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" >
     
     <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Web Service Example "
        android:layout_span="1"
        android:textAppearance="?android:attr/textAppearanceLarge" />
  	        
 	</TableRow>

	<View
		android:layout_height="1dip"
		android:background="#CCCCCC" />
 
  <TableLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:orientation="horizontal">
		<TableRow>
      </TableRow>
      
      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Input Name :"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <EditText
          android:id="@+id/txtName"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:ems="10" >
      </EditText>
      
      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Input Email :"
          android:textAppearance="?android:attr/textAppearanceMedium" />

      <EditText
          android:id="@+id/txtEmail"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:inputType="textEmailAddress"
          android:ems="10" >
      </EditText>

		<Button
		    android:id="@+id/btnSend"
		    android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:text="Send" />

		<TextView
		    android:id="@+id/txtResult"
		    android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:gravity="center"
		    android:textAppearance="?android:attr/textAppearanceSmall" 
		    android:text="Result" />
  	        
 	</TableLayout >

	<View
		android:layout_height="1dip"
		android:background="#CCCCCC" />
   		  
   	<LinearLayout
      android:id="@+id/LinearLayout1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:padding="5dip" >

   		<TextView
   		    android:layout_width="wrap_content"
   		    android:layout_height="wrap_content"
   		    android:text="By.. ThaiCreate.Com" />

	</LinearLayout>
	
</TableLayout>









MainActivity.java
package com.myapp;


import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;

public class MainActivity extends Activity {
	
	private final String NAMESPACE = "https://www.thaicreate.com/android/WebServiceServer.php";
    private final String URL = "https://www.thaicreate.com/android/WebServiceServer.php?wsdl"; // WSDL URL
    private final String SOAP_ACTION = "https://www.thaicreate.com/android/WebServiceServer.php/HelloWorld";
    private final String METHOD_NAME = "HelloWorld"; // Method on web service
    
	@SuppressLint("NewApi")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// Permission StrictMode
		if (android.os.Build.VERSION.SDK_INT > 9) {
			StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
					.permitAll().build();
			StrictMode.setThreadPolicy(policy);
		}

		// btnSend
		Button btnSend = (Button) this.findViewById(R.id.btnSend);
		btnSend.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {

				// txtResult
				TextView txtResult = (TextView) findViewById(R.id.txtResult);
				// txtName
				EditText txtName = (EditText) findViewById(R.id.txtName);
				// txtEmail
				EditText txtEmail = (EditText) findViewById(R.id.txtEmail);

				SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
				request.addProperty("strName", txtName.getText().toString());
				request.addProperty("strEmail", txtEmail.getText().toString());

				SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
						SoapEnvelope.VER11);

				envelope.setOutputSoapObject(request);

				HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

				try {

					androidHttpTransport.call(SOAP_ACTION, envelope);
					SoapObject result = (SoapObject) envelope.bodyIn;

					if (result != null) {
						txtResult.setText(result.getProperty(0).toString());
					} else {
						Toast.makeText(getApplicationContext(),
								"Web Service not Response!", Toast.LENGTH_LONG)
								.show();
					}

				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (XmlPullParserException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		});

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



คำอธิบาย
private final String NAMESPACE = "https://www.thaicreate.com/android/WebServiceServer.php";
เป็น NameSpace ของ Web Service สามารถปล่อยให้ว่างได้

private final String URL = "https://www.thaicreate.com/android/WebServiceServer.php?wsdl"; // WSDL URL
เป็น URL ของ WSDL ที่จะเรียกใช้งาน Web Service

private final String SOAP_ACTION = "https://www.thaicreate.com/android/WebServiceServer.php/HelloWorld";
เป็น Soap Action ปกติจะเป็น URL ตามด้วย Method

private final String METHOD_NAME = "HelloWorld"; // Method on web service
ชื่อ Method ของ Web Service




Screenshot

Android and Web Service

ทดสอบการ Request ไปยัง Web Service และการแสดงค่าที่ถูกส่งกลับมาจาก Web Service

   
Share

Property & Method (Others Related)

Android Insert Data to Server via Web Service
Android Update Data to Server via Web Service
Android Delete Data in Server via Web Service

ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท


ลองใช้ค้นหาข้อมูล


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2012-08-11 15:14:45 / 2017-03-26 21:48:21
  Download : No files
 Sponsored Links / Related

 
Android and Web Server ของ PHP กับ MySQL แสดงบน ListView ในรูปแบบของ JSON
Rating :

 
Android Web Service and JSON Parser
Rating :

 
Android Login Form via Web Service
Rating :

 
Android Get Result / Search Data from Server via Web Service
Rating :


ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่