Tôi đã được cung cấp dịch vụ web được viết bằng Java mà tôi không thể thực hiện bất kỳ thay đổi nào. Nó yêu cầu người dùng xác thực với xác thực cơ bản để truy cập bất kỳ phương thức nào. Cách được đề xuất để tương tác với dịch vụ này trong .NET là sử dụng Visual Studio 2005 với WSE 3.0 được cài đặt.Không thể gọi dịch vụ web với xác thực cơ bản bằng WCF
Đây là vấn đề, vì dự án đã sử dụng Visual Studio 2008 (nhắm mục tiêu .NET 2.0). Tôi có thể làm điều đó trong VS2005, tuy nhiên tôi không muốn kết nối dự án với VS2005 hoặc thực hiện nó bằng cách tạo một assembly trong VS2005 và bao gồm cả giải pháp VS2008 (về cơ bản là liên kết dự án đến 2005).). Tôi nghĩ rằng một trong các tùy chọn này sẽ làm cho mọi thứ phức tạp đối với các nhà phát triển mới bằng cách buộc họ cài đặt WSE 3.0 và giữ cho dự án không thể sử dụng 2008 và các tính năng trong .NET 3.5 trong tương lai ... tức là tôi thực sự tin rằng sử dụng WCF là con đường để đi.
Tôi đã xem xét sử dụng WCF cho điều này, tuy nhiên tôi không chắc chắn làm thế nào để có được dịch vụ WCF để hiểu rằng nó cần phải gửi các tiêu đề xác thực cùng với mỗi yêu cầu. Tôi nhận được 401 lỗi khi cố gắng làm bất cứ điều gì với dịch vụ web.
Đây là những gì mã của tôi trông giống như:
WebHttpBinding webBinding = new WebHttpBinding();
ChannelFactory<MyService> factory =
new ChannelFactory<MyService>(webBinding, new EndpointAddress("http://127.0.0.1:80/Service/Service/"));
factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
factory.Credentials.UserName.UserName = "username";
factory.Credentials.UserName.Password = "password";
MyService proxy = factory.CreateChannel();
proxy.postSubmission(_postSubmission);
này sẽ chạy và ném ngoại lệ sau đây:
The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm=realm'.
Và điều này có một ngoại lệ bên trong:
The remote server returned an error: (401) Unauthorized.
Bất kỳ suy nghĩ về những gì có thể gây ra vấn đề này sẽ được đánh giá cao.
Marc, bạn có thể chỉ cho tôi làm thế nào để viết mã và cấu hình nếu nó là REST của dựa trên dịch vụ Java? – rajibdotnet
Thuộc tính ClientCredentials hoàn toàn không xuất hiện cho tôi sau khi tôi đã nhập proxy. – rajibdotnet
@rajibdotnet: tốt, mã trong câu hỏi về cơ bản là những gì bạn cần gọi cho dịch vụ dựa trên REST .... nếu điều đó không giúp ích: hãy ** hỏi câu hỏi của riêng bạn ** để mọi người có thể trả lời ... –