2012-06-25 27 views
7

Tôi làm cách nào để gọi dịch vụ web ASP .NET và chuyển các tham số bằng URL?Làm cách nào để gọi dịch vụ web và chuyển các tham số bằng URL

Ví dụ, URL cho dịch vụ là như thế,

http://[localhost]:31856/MySystem/MyAPI.asmx?op=getHeight

tôi cần phải vượt qua hai tham số a, b, tôi đã cố gắng

http://[localhost]:31856/MySystem/MyAPI.asmx?op=getHeight?a=254&b=1

Nhưng thất bại.

Vui lòng tư vấn.

Rất cám ơn,

Trả lời

2

Không phải như vậy.
Bạn phải khai báo các tham số trong hàm. Ví dụ ở đây là một ví dụ nhỏ:

[WebMethod] 
public string[] getVariables(string sop, string sgsm) 
{ // do what you want ... } 

Sau đó, khi bạn gọi nó

WebReference.Service1 service = new WebReference.Service1(); 
service.getVariables("foo", "blabla"); 
4

Thay đổi thứ hai ?-&. Nếu bạn nhìn vào trang được hiển thị bởi http://[localhost]:31856/MySystem/MyAPI.asmx, nó sẽ chỉ cho bạn cách gọi nó là HTTP GET.

+0

Cảm ơn jonnyGold, bây giờ nó không cho tôi lỗi nào nhưng nó không hiển thị ra, làm thế nào tôi có thể biết nếu hàm underlyinging được thực hiện thành công? – DafaDil

+0

Thử trỏ [SOAP UI] (http://www.soapui.org/) vào đó. Nó là một công cụ gỡ lỗi dịch vụ web "ngoại lai" tốt. – bluevector

7

Nếu bạn cần phải vượt qua nhiều hơn một tham số, sử dụng định dạng này param1=value1&param2=value2 và vì vậy on.So liên kết của bạn nên là:

http://[localhost]:31856/MySystem/MyAPI.asmx/AnyMethodName?op=getHeight&a=254&b=1 

Bạn cần một phương pháp như phương pháp this.This trả về một danh sách các chuỗi, nó chỉ để trình diễn.

[WebMethod] 
    public List<string> AnyMethodName(string op, string a, string b) 
    { 
     //Do whatever you want, get answer 
     return (ans.ToList()); 
    } 
+0

Cảm ơn Ashwin, Nó không hiển thị một cách đặt ra như vậy làm thế nào tôi có thể biết nếu các chức năng underlyinging thực hiện thành công? – DafaDil

+0

Nhìn vào câu trả lời kad1r, bạn cần một WebMethod, để xử lý các truy vấn và url như thế này http: // [localhost]: 31856/MySystem/MyAPI.asmx/getVariables? Op = getHeight & a = 254 & b = 1 –

+0

Tôi hiểu, tình hình của tôi có một chút khác biệt, tôi cần phải thực thi dịch vụ web hoàn toàn từ URL (để kiểm tra hiệu suất) và nhận được kết quả đầu ra. – DafaDil

2

tôi đã cùng một vấn đề và tôi cần phải thêm dòng sau trong webconfig của tôi bên trong -tag system.web:

<webServices> 
<protocols> 
<add name="HttpGet" /> 
</protocols> 
</webServices> 

Phần còn lại là khá nhiều như đã đề cập (sử dụng ví dụ từ câu trả lời Ashwin, chỉ cần loại bỏ các op-tham số)

[WebMethod] 
    public List<string> AnyMethodName(string a, string b) 
    { 
     //Do whatever you want, get answer 
     return (ans.ToList()); 
    } 

sau đó tôi đã có thể gọi webservice như sau (loại bỏ các op-tham số một lần nữa):

http://localhost/MySystem/MyAPI.asmx/AnyMethodName?a=254&b=1 
Các vấn đề liên quan