Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Webservice

29 Tháng Mười Hai, 2020 by admin
Lượt xem: 109

Contents

  • 1. Client Winform Service C#
    • 1.1 Tạo project winform C#
    • 1.2 Thêm service client
    • 1.3 Sử dụng webservice
  • 2. Client Webform Service C#
    • 2.1 Tạo project webform C#
    • 2.2 Thêm service client
    • 2.3 Sử dụng webservice
  • 3. Client Console Service C#
    • 3.1 Tạo project console C#
    • 3.2 Thêm service client
    • 3.3 Sử dụng webservice
    • 3.4 Một số lệnh của console C#
      • 3.4.1 Console.Write()
      • 3.4.2 Console.WriteLine()
      • 3.4.3 Console.Read()
      • 3.4.4 Console.ReadLine()
      • 3.4.5 Console.ReadKey()
  • 4. Tạo Webservice trên C#
  • 5. Client Java App
    • 5.1 Tạo project App Java
    • 5.2 Thêm service client
    • 5.3 Sử dụng webservice
  • 6. Client Console Service Java
    • 6.1 Tạo project console Java
    • 6.2 Thêm service client
    • 6.3 Sử dụng webservice
    • 6.4 Một số lệnh của console Java
      • 6.4.1 Lệnh xuất dữ liệu ra màn hình
      • 6.4.2 Lệnh nhập dữ liệu
  • 7. Tạo Webservice trên Java
    • 7.1 Những cài đặt ban đầu
      • 7.1.1 SOAP WebService
      • 7.1.2 Cài GlassFish
      • 7.1.3 Cài TomCat
    • 7.2 Tạo Project Web
    • 7.3 Tạo webservice
    • 7.4 Thêm phương thức cho webservice
  • 8. Kinh nghiệm
    • 8.1 Vấn đề kêt nối webservice java vào C#
      • 8.1.1 C# nhận webservice Java nhưng báo lỗi lock/readonly
      • 8.1.2 Câu lệnh khởi tạo thuần bị lỗi
    • 8.2 Chuyển đổi kiểu dữ liệu
      • 8.2.1 C#
      • 8.2.2 Java
    • 8.3 Sắp xếp mảng nhanh
      • 8.3.1 C#
      • 8.3.2 Java
    • 8.4 Duyệt nhanh mảng
      • 8.4.1 C#
      • 8.4.2 Java
    • 8.5 Lỗi Unable to open web service tester page (Khi test webservice java)
    • 8.6 Lỗi về cơ sở dữ liệu Linq
      • 8.6.1 There was an error generating the XML document. —> System.InvalidOperationException: A circular reference was detected while serializing an object of type
    • 8.7 Không sử dụng linq vẫn kết nối csdl phà phà
      • 8.7.1 getAll
      • 8.7.2 Thêm
      • 8.7.3 Sửa
      • 8.7.4 Xóa
      • 8.7.5 Get By ID
      • 8.7.6 Thư viện kết nối csdl
      • 8.7.7 Sql lấy data bỏ qua n dòng
      • 8.7.8 Sql lấy n dòng cuối danh sách
    • 8.8 Lấy data webservice trả về đổ vào DataTable

1. Client Winform Service C#

1.1 Tạo project winform C#

Bước 1: Mở Visual Studio C#

Bước 2: Chọn File -> New Project (Hoặc sử dụng tổ hợp phím tắt Ctr l+ N)

C# New Project

Bước 3: Trong hộp thoại New Project chọn Other Languages-> Visual C # và chọn Windows Forms Application

C# Windows Application

Bước 4: Nhập tên dự án ở phía dưới sau đó nhấp nốt OK sẽ hiển thị ra Form1 là Form mặc định của dự án.

1.2 Thêm service client

1- Bấm chuột phải vào Project/ chọn Add Service Reference:

1h45_1

2- Màn hình chọn WebService hiển thị ra như bên dưới đây:

1h45_23-Bạn nhập url của web service vào khung nhập address và nhớ là đường dẫn có ?WSDL ở phía sau.

4- Bạn đặt tên cho webservice ở Namespace. Click OK để hoàn thành.

Nếu tạo thành công thì trong Solution Explorer sẽ xuất hiện thư mục Service.references

1.3 Sử dụng webservice

Đầu tiên bạn vào code behind (nháy chuột phải chọn view code) để khai báo webservice. Bạn thêm code sau phía trên constructor của Form như bên dưới. Bạn thay đổi chữ WebService thành tên bạn đặt lúc nãy

WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient();
public Form1()
{
  InitializeComponent();
}

Như vậy đối tượng webservice đã được khai báo với tên là ws. Bạn sử dụng biến ws để gọi các phương thức của webservice.

Ví dụ: Webservice có phương thức giai_pt_bac_1 gồm 2 tham số và trả kết quả dạng string thì: 

txtKq.Text = ws.giai_pt_bac_1(a, b);

Source code đầy đủ

private void button1_Click(object sender, EventArgs e)
{
  if(radioPT1.Checked == false && radioPT2.Checked == false)
  {
    MessageBox.Show("Bạn cần chọn phương trình để giải");
  } else if(radioPT1.Checked)
  {
    float a = float.Parse(txtA1.Text);
    float b = float.Parse(txtB1.Text);
    txtKq.Text = ws.giai_pt_bac_1(a, b);
  } else
  {
    float a = float.Parse(txtA2.Text);
    float b = float.Parse(txtB2.Text);
    float c = float.Parse(txtC2.Text);
    txtKq.Text = ws.giai_pt_bac_2(a, b, c);
  }
}
}

2. Client Webform Service C#

2.1 Tạo project webform C#

Chọn New > Web Site > Visual C# và chọn Empty Website, nơi lưu và OK:

Lúc này chúng ta có một site rỗng, chỉ chứa một file gọi là Web.config. Mở cửa sổ Solution Explorer ta sẽ thấy như sau:

2.2 Thêm service client

1- Bấm chuột phải vào Project/ chọn Add => Service Reference:

2- Màn hình chọn WebService hiển thị ra như bên dưới đây:

1h45_23-Bạn nhập url của web service vào khung nhập address và nhớ là đường dẫn có ?WSDL ở phía sau.

4- Bạn đặt tên cho webservice ở Namespace. Click OK để hoàn thành.

Nếu tạo thành công thì trong Solution Explorer sẽ xuất hiện thư mục App_WebReferences

2.3 Sử dụng webservice

Đầu tiên bạn add file webform mới bằng cách nháy chuột phải vào project => Add => Webform và đặt tên nhấn ok.

Tiếp theo vào code behind (nháy chuột phải chọn view code) để khai báo webservice. Bạn thêm code sau phía trên hàm Page_load như bên dưới. Bạn thay đổi chữ WebService thành tên bạn đặt lúc nãy

Service.ServiceSoapClient ws = new Service.ServiceSoapClient();
protected void Page_Load(object sender, EventArgs e)
{

}

Như vậy đối tượng webservice đã được khai báo với tên là ws. Bạn sử dụng biến ws để gọi các phương thức của webservice.

Ví dụ: Webservice có phương thức giai_pt_bac_1 gồm 2 tham số và trả kết quả dạng string thì: 

txtKq.Text = ws.giai_pt_bac_1(a, b);

Source code đầy đủ

private void button1_Click(object sender, EventArgs e)
{
  if(radioPT1.Checked)
  {
    float a = float.Parse(txtA1.Text);
    float b = float.Parse(txtB1.Text);
    txtKq.Text = ws.giai_pt_bac_1(a, b);
  } else
  {
    float a = float.Parse(txtA2.Text);
    float b = float.Parse(txtB2.Text);
    float c = float.Parse(txtC2.Text);
    txtKq.Text = ws.giai_pt_bac_2(a, b, c);
  }
}

3. Client Console Service C#

3.1 Tạo project console C#

Bước 1: Mở Visual Studio C#

Bước 2: Chọn File -> New Project (Hoặc sử dụng tổ hợp phím tắt Ctr l+ N)

C# New Project

Bước 3: Trong hộp thoại New Project chọn Other Languages-> Visual C # và chọn Console Application

Bước 4: Nhập tên dự án ở phía dưới sau đó nhấp nốt OK.

3.2 Thêm service client

Việc thêm webservice vào tương tự như trên winform.

1- Bấm chuột phải vào Project/ chọn Add Service Reference:

1h45_1

2- Màn hình chọn WebService hiển thị ra như bên dưới đây:

1h45_23-Bạn nhập url của web service vào khung nhập address và nhớ là đường dẫn có ?WSDL ở phía sau.

4- Bạn đặt tên cho webservice ở Namespace. Click OK để hoàn thành.

Nếu tạo thành công thì trong Solution Explorer sẽ xuất hiện thư mục Service.references

3.3 Sử dụng webservice

Đầu tiên bạn cần để khai báo webservice ở hàm main. Bạn thay đổi chữ WebService thành tên bạn đặt lúc nãy 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
			WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient();
        }
    }
}

Như vậy đối tượng webservice đã được khai báo với tên là ws. Bạn sử dụng biến ws để gọi các phương thức của webservice.

Ví dụ: Webservice có phương thức giai_pt_bac_1 gồm 2 tham số và trả kết quả dạng string thì: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
			WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient();
        	Console.Write(ws.giai_pt_bac_1(a, b));
        }
    }
}

Ví dụ khác về cộng trừ nhân chia. Source code console full:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceReference1.ServiceSoapClient ws = new ServiceReference1.ServiceSoapClient();

            int a, b;

            Console.Write("Nhap so thu nhat: ");
            a = Int32.Parse(Console.ReadLine());
            Console.Write("Nhap so thu hai: ");
            b = Int32.Parse(Console.ReadLine());

            Console.WriteLine("a + b = " + ws.cong(a, b));
            Console.WriteLine("a - b = " + ws.tru(a, b));
            Console.WriteLine("a * b = " + ws.nhan(a, b));
            Console.WriteLine("a / b = " + ws.chia(a, b));

            Console.ReadKey();
        }
    }
}

3.4 Một số lệnh của console C#

//Trong C# có 5 lệnh dùng để nhập xuất đó là:

Console.Write();

Console.WriteLine();

Console.Read();

Console.ReadLine();

Console.ReadKey();

3.4.1 Console.Write()

// In ra màn hình dòng chữ Hello
Console.Write("Hello"); 

// In ra màn hình số 10
Console.Write(10); 

// In ra màn hình số 10.9 (f biểu thị cho kiểu dữ liệu float sẽ được trình bày chi tiết ở bài 5)
Console.Write(10.9f); 

// In ra màn hình chữ true của kiểu dữ liệu bool(sẽ được trình bày chi tiết ở bài 5)
Console.Write(true); 

3.4.2 Console.WriteLine()

3.4.3 Console.Read()

Console.WriteLine(Console.Read()); 
// đọc 1 ký tự từ bàn phím bằng lệnh Console.Read() sau đó in ra ký tự vừa đọc được.

3.4.4 Console.ReadLine()

Console.WriteLine(Console.ReadLine()); 
// đọc dữ liệu từ bàn phím cho đến khi gặp ký tự xuống dòng thì dừng. Sau đó in giá trị đã nhập ra màn hình.

3.4.5 Console.ReadKey()

Console.ReadKey(); 
// lệnh này dùng với mục đích dừng màn hình để xem kết quả.

4. Tạo Webservice trên C#

  1. Tạo Web Service
  2. Trong môi trường Visual Studio, Ta chọn File->New->Website. Tiếp theo chọn Visual C# => .NET Framework 3.5 => ASP.NET WebService => Chọn thư mục và đặt tên project phía sau đường dẫn => Nhấn OK

 Nhấn OK, ta được

  1. Code cho các service methods như sau:

Bạn viết các hàm như bình thường ở file Service.asmx nhưng phía trên tên hàm cần có [WebMethod]

[WebMethod]
public double USD2VND(double usd)
{
	return usd * USD_RATE;
}

[WebMethod]
public double EUR2VND(double eur)
{
	return eur * EUR_RATE;
}
  1. Chạy ứng dụng bằng cách nhấn F5, VS sẽ triển khai ứng dụng. Kết quả như sau

Nếu bạn muốn xem WSDL của service, ta nhấn link “Service Description” ta có

Ghi nhớ lại link này để còn dùng về sau : http://localhost:1291/ConvertWS.asmx?WSDL

  1. Để thử service, ta có thể chọn bất kỳ link nào trong 4 link EUR2VND, USD2VND VND2EUR, VND2USD. Ở đây ta thử link USD2VND, kết quả như sau

Nhập usd có giá trị 100, nhấn Invoke, kết quả nhận được là

Như vậy là chúng ta đã tạo được 1 Web Service, bây giờ chúng ta có thể triển khai 1 ứng dụng client được rồi.

Nguồn: https://vovanhai.wordpress.com/web-services

5. Client Java App

5.1 Tạo project App Java

Mình sử dụng Netbeans IDE nhé!

1. Khởi động Netbean, tạo 1 project cho ứng dụng Java: chọn menu File => New Project…

– Hộp thoại New Project xuất hiện,

– Trong hộp thoại này, mục Categories (1) chọn Java, mục Projects (2) chọn Java Application, Xong chọn nút Next để chuyển sang màn hình kế tiếp

– Trong màn hình New Java Application

+ Mục Project Name (1): đặt tên cho Project (lưu ý là không sử dụng ký tự đặc biệt)

+ Mục Project Location (2): chọn nơi lưu Project

+ Mục Create Main Class (3): bỏ chọn (không có dấu check, hình chụp trên là có dấu check)

+ Xong chọn Finish (4) để hoàn thành việc tạo ra Project cho ứng dụng Java

TẠO JFRAME FORM

Tạo Form trống, chưa có gì hết

– Trong Netbean IDE, chọn File => New File…

– Màn hình New File xuất hiện

– Trong màn hình này, mục Categories chọn Swing GUI Forms, mục File Types chọn JFrame Form, xong chọn nút Next

– Mỗi cửa sổ Swing trong Java là một class thừa kế từ lớp JFrame, trong màn New Application Sample Form

+ Mục Class Name: đặt tên cho Form

+ Mục Package: đặt tên cho package chứa Form này

+ Xong chọn nút Finish để hoàn thành việc tạo Form

– Chúng ta có thể Run Project để xem kết quả:

CÁCH KHÁC TẠO JFRAME FORM ĐƠN GIẢN HƠN

Nháy chuột phải vào project => New => JFrame Form

5.2 Thêm service client

  • Nếu chưa cài plugin SOAP Web Service vào netbeans, bạn cần cài Plugin vào:

Tools => Plugins => Availables Plugins => tích vào SOAP Web Service => Install   (nhấn next,… và chờ khởi động lại netbeans)

  • Click phải chuột vào project => New => Web Service Client
  • Tiếp tục chọn WSDL URL:
  • Nhập đường dẫn của webservice vào. Nhớ là có ?WSDL nhé.
  • Nhập Finish
  • Nếu thành công bạn sẽ thấy thư mục Web Service References trong project của mình

5.3 Sử dụng webservice

Ở JFrame bạn cần sử dụng webservice chọn Source

Bạn mở thư mục Web Service References => Service => ServiceSoap

Tại đây có tất cả các method mà webservice hỗ trợ

Bạn cần sử dụng hàm nào thì chỉ cần nắm method đó kéo thả vào code bên khung bên phải.

Như ví dụ là phương thức add như vậy bên code sẽ tạo cho ta  một phương thức add và sử dụng như bình thường.

Ví dụ method add này nhận 2 tham số kiểu int và trả về kiểu int

int tong = add(5, 7);

Đơn giản lắm đúng không?

6. Client Console Service Java

6.1 Tạo project console Java

Bước 1: Mở Netbeans

Bước 2: Chọn File -> New Project (Hoặc sử dụng tổ hợp phím tắt Ctr l+ N). Chọn Java => Java Application => Next

C# New Project

Bước 3: Đặt tên project và chọn nơi lưu.

Bước 4: Nhấn Finish

6.2 Thêm service client

Việc thêm webservice vào tương tự như trên Java App Form.

  • Nếu chưa cài plugin SOAP Web Service vào netbeans, bạn cần cài Plugin vào:

Tools => Plugins => Availables Plugins => tích vào SOAP Web Service => Install   (nhấn next,… và chờ khởi động lại netbeans)

  • Click phải chuột vào project => New => Web Service Client
  • Tiếp tục chọn WSDL URL:
  • Nhập đường dẫn của webservice vào. Nhớ là có ?WSDL nhé.
  • Nhập Finish
  • Nếu thành công bạn sẽ thấy thư mục Web Service References trong project của mình

6.3 Sử dụng webservice

Bạn mở file cùng tên với project của bạn.

Bạn mở thư mục Web Service References => Service => ServiceSoap

Tại đây có tất cả các method mà webservice hỗ trợ

Bạn cần sử dụng hàm nào thì chỉ cần nắm method đó kéo thả vào code bên khung bên phải.

Như ví dụ là phương thức add như vậy bên code sẽ tạo cho ta  một phương thức add và sử dụng như bình thường.

Ví dụ method add này nhận 2 tham số kiểu int và trả về kiểu int

package consolejava;

import java.util.Scanner;

public class ConsoleJava {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int so1 = 0, so2 = 0;
        // Nhập vào hai số
        System.out.print("Nhập số thứ nhất: ");
        so1 = Integer.parseInt( scanner.nextLine() );
        System.out.print("Nhập số thứ hai: ");
        so2 = Integer.parseInt( scanner.nextLine() );
        
        //hiển thị kết quả
        System.out.print("Tổng: " + add(so1, so2));
    }

    private static int add(int a, int b) {
        org.tempuri.Service service = new org.tempuri.Service();
        org.tempuri.ServiceSoap port = service.getServiceSoap();
        return port.cong(a, b);
    }
}

6.4 Một số lệnh của console Java

6.4.1 Lệnh xuất dữ liệu ra màn hình

System.out.print();
System.out.println();

6.4.2 Lệnh nhập dữ liệu

Trước tiên cần tạo đối tượng Scanner trong hàm main và import thư viện Scanner

package consolejava;

import java.util.Scanner;

public class ConsoleJava {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
    }
}

Sau đó từ đối tượng Scanner bạn tiến hành chấm đến phương thức cần sử dụng

scanner.nextLine()
scanner.nextInt()
scanner.nextFloat()
...

7. Tạo Webservice trên Java

7.1 Những cài đặt ban đầu

Những thứ bạn cần cài:

  • SOAP WebService
  • Webserver: GlassFish hoặc TomCat (Lưu ý: cài 1 trong 2 thôi nhé)

7.1.1 SOAP WebService

  • Nếu chưa cài plugin SOAP Web Service vào netbeans, bạn cần cài Plugin vào:

Tools => Plugins => Availables Plugins => tích vào SOAP Web Service => Install   (nhấn next,… và chờ khởi động lại netbeans)

7.1.2 Cài GlassFish

Download GlassFish: https://download.oracle.com/glassfish/5.0/release/index.html và chọn glassfish-5.0.zip để download. Sau đó giải nén thư mục tải về.

Thêm Server GlassFish:

Bạn vào Windows => Service

Tại Tab Servies => Chuột phải lên Servers chọn Add Server

Sau đó chọn “GlassFish Server” => Next.

Chọn đường dẫn thư mục giải nén của GlassFish tải lúc nãy (nhớ là đi vào thêm một cấp thư mục nữa). Nhấn Next

Trường hợp bạn bị lỗi “Not a valid GlassFish Server installation.” thì:

  1. Bạn download gói thư viện GlassFish bản thấp hơn 5.0 và thực hiện lại từ đầu phần này.
  2. Sử dụng TomCat bên dưới
  3. Gỡ Netbeans và cài lại. 

Nếu không lỗi thì tiếp tục nhé!

Để cấu hình mặc định => Finish

Bật Server lên:

Tại Tab Servies => Chuột phải lên Servers GlassFish chọn Start

7.1.3 Cài TomCat

Nếu cài được GlassFish phía trên thì khỏi cần phải cài thêm TomCat nhé. Trường hợp cài lỗi thì mình sử dụng TomCat.

Bạn download source TomCat về máy tại đường dẫn: https://tomcat.apache.org/download-80.cgi (chọn phiên bản phù hợp 32bit, 64bit tùy máy bạn nhé). Sau đó giải nén.

Thêm Server Tomcat:

Bạn vào Windows => Service

Tại Tab Servies => Chuột phải lên Servers chọn Add Server

Sau đó chọn “Apache Tomcat” hoặc “Apache Tomcat or TomEE” tùy phiên bản netbeans bạn cài => Next.

Chọn đường dẫn thư mục lúc nãy bạn giải nén tại  và nhớ vào thêm một cấp thư mục nữa. Đặt usename, password. Nhấn Finish

Bật Server lên:

Tại Tab Servies => Chuột phải lên Servers TomCat chọn Start

Nếu gặp lỗi “‘127.0.0.1*’ is not recognized as an internal or external command, operable program or batch file.” Bạn khắc phục như sau:

– B1:  Mở Netbeans, vào Tool, chọn Option, click “no proxy“
 
 
– B2: Vào Services > Servers > Chuột phải Apache Tomcat > chọn Start

7.2 Tạo Project Web

Chọn File -> New Project từ menu -> chọn Java Web -> chọn Web Application -> chọn Next.

xây dựng web application với java

Tại Nhập tên project tại Project Name, nhập JavaWebApplication. Chọn nơi lưu trữ project tại Project Location ->  chọn Next.

xây dựng web application với java

Lựa chọn Server: (Lúc nãy bạn cài GlassFish thì chọn GlassFish, Tomcat chọn Tomcat nhé) và Java EE Version: Java EE 7 Web -> chọn Next

xây dựng web application với java

Tại màn hình kế tiếp chọn Finish

7.3 Tạo webservice

Chuột phải tại tên project -> chọn New -> chọn Web Service…

Đặt tên webservice tại Web Service Name và đặt tên package tại Package và nhấn Finish.

Bên project bạn sẽ thấy xuất hiện thư mục Web Service và bên trong là tên webservice bạn đặt tên lúc nãy.

Đến đây bạn cần build project trước khi viết webservice. Chọn nút Run trên thanh công cụ của netbeans.

Build xong chương trình sẽ mở một web trong trình duyệt, bạn cứ tắt trình duyệt và tiếp tục nhé.

7.4 Thêm phương thức cho webservice

Thêm Phương thức cho Webservice

Nháy chuột phải vào tên webservice => Add Operation …

Nhập tên phương thức và kiểu trả về. Nếu khác kiểu string, bạn nhấn Browser để chọn kiểu dữ liệu (lưu ý là chọn  tên của kiểu dạng đầy đủ. Ví dụ kiểu int thì là integer ) và nhấn OK.

Đến đây bạn viết hàm như bình thường. Ví dụ như trên là hàm tổng mình truyền hai tham số và trả về tổng của chúng. Mình viết như sau:

/**
     * Web service operation
     */
@WebMethod(operationName = "tong")
public Integer tong(int a, int b) {
  //TODO write your implementation code here:
  return a + b;
}

Viết xong bạn build lại project

Sau đó bạn chuột phải lên webservice => Test Web Service

Với GlassFish sẽ ra giao diện như thế này:

Còn Tomcat sẽ ra như thế này

Vì vậy, bạn thấy GlassFish sẽ tiện hơn cho ta khi test đúng không nào?

8. Kinh nghiệm

8.1 Vấn đề kêt nối webservice java vào C#

8.1.1 C# nhận webservice Java nhưng báo lỗi lock/readonly

Cách Sửa lỗi: Bạn vào Debug => Options and Setttings

debug

Chọn Source Controll => None => OK

none

Và kết nối lại webservice thôi.

8.1.2 Câu lệnh khởi tạo thuần bị lỗi

Với Java là webservice lệnh kết nối không còn là:

WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient();

mà sẽ được thay thành

WebService.webserviceClient ws = new WebService.webserviceClient();

Lưu ý: WebService là tên bạn đặt lúc thêm webservice vào

Đến đây cách xài như bình thường ws chấm đến phương thức cần sử dụng là ok.

8.2 Chuyển đổi kiểu dữ liệu

8.2.1 C#

//int, float, doutble,... to string
int a = 5;
String b = a.toString();

//string to int
Int32.Parse()
  
//string to float
float.Parse()
 
//string to double
double.Parse()

8.2.2 Java

//int, float, doutble,... to String
int a = 5;
String b = String.valueOf(a);

//String to int
Integer.parseInt()
  
//String to float
Float.parseFloat()
 
//String to double
Double.parseDouble()

8.3 Sắp xếp mảng nhanh

8.3.1 C#

Sắp xếp tăng dần

Array.Sort(arr);

// arr: tên mảng
// ban đầu: arr => 1 4 5 -1 40 25
// sau khi sort:  -1 1 4  5 25 40

Sắp xếp giảm dần

 Array.Reverse(arr);

// arr: tên mảng
// ban đầu: arr => 1  4 5 -1 40 25
// sau khi sort:  40 25 5  4 1 -1

8.3.2 Java

Sắp tăng dần

Arrays.sort(arr);

Sắp giảm dần

Bạn copy hàm này vào để sử dụng nhé!

public static void reverse(int[] input) { 
  int last = input.length - 1; 
  int middle = input.length / 2; 
  for (int i = 0; i <= middle; i++) 
  { 
    int temp = input[i]; 
    input[i] = input[last - i]; 
    input[last - i] = temp; 
  } 
}

8.4 Duyệt nhanh mảng

8.4.1 C#

foreach (int i in arr)
     result += " " + i;

// tương tự với
//for(int i =0; i<arr.Length; i++)
//	 result += " " + arr[i];

8.4.2 Java

for(int i : arr)
     result += " " + i;

8.5 Lỗi Unable to open web service tester page (Khi test webservice java)

Khi test webservice java nếu bị lỗi này thì fix như sau: 

Bài viết tham khảo: https://netbeans.org/kb/docs/websvc/jax-ws.html#extschema

Cách fix:

  • Vào thư mục cài đặt netbeans => mở file netbeans.conf: C:\Program Files\NetBeans 6.8\etc\netbeans.conf
  • Dán đoạn code bên dưới vào mục netbeans_default_options. Và lưu lại.

 

-J-Djavax.xml.accessExternalSchema=all
  • Mở thư mục cài server glassfish => mở file domain.xml: GLASSFISH_INSTALL/glassfish/domains/domain1/config/domain.xml
  • Dán đoạn code bên dưới trong thẻ </java-config> và lưu lại.
<java-config>
  ...
  <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
</java-config>
  • Khởi động lại glassfish trong netbeans
  • Nháy chuột phải và project => Deploy

8.6 Lỗi về cơ sở dữ liệu Linq

8.6.1 There was an error generating the XML document. —> System.InvalidOperationException: A circular reference was detected while serializing an object of type

Cách sửa lỗi:

8.7 Không sử dụng linq vẫn kết nối csdl phà phà

Có thể sử dụng class kết nối csdl để sử dụng câu lệnh sql thông thường mà không cần linq. File kết nối bạn xem mục 4 của bài viết: Những điều cơ bản về Winform C#.

connect ở các hàm bên dưới là tên đối tượng của class KN_CSDL

KN_CSDL connect = new KN_CSDL();

8.7.1 getAll

[WebMethod]
public DataSet duLieuBoDeThi()
{
  String sql = "SELECT * FROM tbl_bo_de_thi";
  DataSet dt_bo_de = new DataSet();
  dt_bo_de = connect.LayBang2(sql);
  return dt_bo_de;
}

8.7.2 Thêm

[WebMethod]
public bool taoBoDe(string tenBoDe)
{
  String sql = "insert into tbl_bo_de_thi(ten_bo_de) values(N'" + tenBoDe + "')";
  if (connect.CapnhatCSDL(sql))
  {
    return true;
  }
  else return false;
}

8.7.3 Sửa

[WebMethod]
public bool capNhatBoDe(string tenBoDe, string id)
{
  String sql = "update tbl_bo_de_thi set ten_bo_de=N'" + tenBoDe + "' where ma_bo_de='" + id + "'";
  if (connect.CapnhatCSDL(sql))
  {
    return true;
  }
  else return false;
}

8.7.4 Xóa

[WebMethod]
public bool xoaBoDe(string id)
{
  String sql = "delete from tbl_bo_de_thi where ma_bo_de=N'" + id + "'";
  if (connect.CapnhatCSDL(sql))
  {
    return true;
  }
  else return false;
}

8.7.5 Get By ID

[WebMethod]
public DataSet getBoDeByID(string id)
{
  String sql = "select * from tbl_bo_de_thi where ma_bo_de='" + id + "'";
  DataSet bode_table = new DataSet();
  bode_table = connect.LayBang2(sql);
  return bode_table;
}

8.7.6 Thư viện kết nối csdl

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for KN_CSDL
/// </summary>
public class KN_CSDL
{
    SqlConnection sqlketnoi;
    SqlCommand sqllenh;
    public KN_CSDL()
    {
        sqlketnoi = new SqlConnection();
        //string chuoiketnoi = "Data Source =.; Initial Catalog = QLHH; Integrated Security = True";
        string chuoiketnoi = @"Data Source=TRONGHAO-PC\SQLEXPRESS;Initial Catalog=QLHH;Integrated Security=True";
        sqlketnoi.ConnectionString = chuoiketnoi;
        sqllenh = new SqlCommand();
    }
    public bool Moketnoi()
    {
        try
        {
            sqlketnoi.Open();
            return true;
        }
        catch
        {
            return false;
        }
    }
    public void Dongketnoi()
    {
        sqlketnoi.Close();
    }
    public bool CapnhatCSDL(string str)
    {
        try
        {
            this.Moketnoi();
            sqllenh.Connection = sqlketnoi;
            sqllenh.CommandText = str;
            sqllenh.ExecuteNonQuery();
            this.Dongketnoi();
            return true;
        }
        catch
        {
            return false;
        }
    }
    public DataTable LayBang(string str)
    {
        this.Moketnoi();
        SqlDataAdapter bodocghi = new SqlDataAdapter(str, sqlketnoi);
        DataTable bang = new DataTable();
        bodocghi.Fill(bang);
        this.Dongketnoi();
        return bang;
    }

    public DataSet LayBang2(string str)
    {
        this.Moketnoi();
        SqlDataAdapter bodocghi = new SqlDataAdapter(str, sqlketnoi);
        DataSet bang = new DataSet();
        bodocghi.Fill(bang);
        this.Dongketnoi();
        return bang;
    }

    public string mahoa(string pass)
    {
        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Trim(), "SHA1");
    }
}

8.7.7 Sql lấy data bỏ qua n dòng

select * from NHANVIEN as nv
where nv.MaNV not in
(
  select top 2 MaNV from NHANVIEN
)

--số 2 thay thành số dòng muốn bỏ

8.7.8 Sql lấy n dòng cuối danh sách

declare @sl int
select @sl  = (count(*) - 1) from NHANVIEN
select * from NHANVIEN as nv
where nv.MaNV not in
  (
  select top (@sl) MaNV from NHANVIEN
)

8.8 Lấy data webservice trả về đổ vào DataTable

DataSet dtSet = new DataSet();
dtSet = ws.duLieuBoDeThi();
DataTable nguoidung_table = new DataTable();
nguoidung_table = dtSet.Tables[0];
  • Webservice phải trả về kiểu dữ liệu DataSet
  • DataSet là một container chứa nhiều DataTable do đó ta lấy Tables[0] đổ vào DataTable là dữ liệu cần tìm
  • Xem thêm về DataSet, DataTable tại bài viết: https://laptrinhvb.net

No related posts.

Post navigation

Previous Post:

Khắc phục pin sạc không vào – báo lỗi “plugged in, not charging”

Next Post:

Môn An Toàn Và Bảo Mật Thông Tin

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074469
Visit Today : 65
Visit Yesterday : 178
This Month : 740
Who's Online : 4
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes