2009-07-08 54 views
5

Ok để bắt đầu, tôi không sử dụng bất kỳ loại dịch vụ web nào. Ngay bây giờ tôi không biết nhiều về ứng dụng nhận XML ngoài nó nhận được nó. Tôi giúp tôi rất nhiều. Tôi không viết ứng dụng nhận nhưng công ty của tôi không có bất kỳ cách nào hữu ích để kiểm tra giai đoạn truyền dẫn XML.Gửi XML qua HTTP Post tới IP: Cổng

tôi về cơ bản muốn gửi một tài liệu XML như thế này ...

<H2HXmlRequest class="myClass"> 
<Call> 
    <CallerID></CallerID> 
    <Duration>0</Duration> 
</Call> 
<Terminal> 
    <CancelDate></CancelDate> 
    <ClerkLoginTime></ClerkLoginTime> 
</Terminal> 
<Transaction> 
    <AcceptedCurrency></AcceptedCurrency> 
    <AccountId>6208700003</AccountId> 
</Transaction> 
</H2HXmlRequest> 

... đến ứng dụng mà tôi không thực sự biết nhiều về. Đó là không có gì lạ mắt và với sự giúp đỡ thích hợp, tôi có lẽ có thể tìm hiểu thêm thông tin. Nhưng những gì tôi đang tìm cách làm là đưa ra một số loại ứng dụng C# Forms có thể đưa yêu cầu đó lên trên, gửi nó lên trên bằng cách sử dụng một IP và cổng, và hy vọng thấy điều gì đó xảy ra.

+0

Bạn đang trộn nhiều khái niệm ở đây. Tiêu đề cho biết http POST nhưng câu hỏi đề cập đến ứng dụng Biểu mẫu và gửi nó qua cổng TCP. Vì vậy, đó là nó? ứng dụng web hoặc ứng dụng WinForms? Và XML có phải là thứ mà ai đó sẽ dán vào đó không? –

+0

Không, đó là ứng dụng WinForms có thể thực hiện một bài đăng HTTP. – Stevus

Trả lời

10

Cách được khuyến nghị để thực hiện các yêu cầu web đơn giản là sử dụng đối tượng WebClient.

Dưới đây là một đoạn mã:

// assume your XML string is returned from GetXmlString() 
string xml = GetXmlString(); 


// assume port 8080 
string url = new UriBuilder("http","www.example.com",8080).ToString();  


// create a client object 
using(System.Net.WebClient client = new System.Net.WebClient()) { 
    // performs an HTTP POST 
    client.UploadString(url, xml); 

} 
+0

Nếu đó là System.Net thay vì System.Web? – Stevus

+0

@Steven: yes! Cảm ơn. –

+0

Đừng quên loại bỏ thuộc tính 'encoding' khỏi khai báo xml (ví dụ' '), Hoặc làm cho thuộc tính mã hóa khớp với mã hóa của thuộc tính' WebClient.Encoding' (Ví dụ: '') ** Lưu ý: ** tôi không biết mã hóa mặc định của 'WebClient' là gì, nhưng bạn hy vọng nó là một số biểu mẫu của Unicode. –

0

Nếu bạn có một địa chỉ IP và cổng tại sao bạn không cố gắng XML trên TCP/IP. Trong C# bạn có thể làm điều này bằng cách sử dụng lớp System.Net.Sockets TCPClient. Lớp này có các phương thức Kết nối, gửi và nhận, để kết nối với IP và cổng sau đó gửi tin nhắn và chờ để nhận tin nhắn.

+2

Tại sao không? Bạn không nên tái phát minh ra bánh xe. Đã có một thư viện kiểm tra, kiểm tra bảo mật, duy trì mã để gửi dữ liệu đến máy chủ http. Thú vị vì nó sẽ tự viết mã ổ cắm, nó quá dễ dàng để có lỗi, hoặc lỗ hổng bảo mật trong đó. –

Các vấn đề liên quan