需要一些帮助来获取Web服务的响应代码。你能帮我点点滴滴吗?

时间:2011-02-24 19:52:39

标签: c# asynchronous delegates wsdl web-reference

好的,自从我使用Web References以来已经有一段时间了。我需要复习一下。我想我有大约80%的代码需要得到响应,但我错过了一些东西。也许你可以帮助我:)。

假设:
指向GetSomething网址时方法列表中名为.wsdl的网络方法。

这会产生一些类/对象:

  • GetSomethingRequest
  • GetSomethingCompletedEventHandler
  • GetSomethingCompletedEventArgs
  • myComplexType

我用它来创建此代码:

void someMethodToTestResponse()
{
    GetSomethingRequest request = new GetSomethingRequest();

    // fill in the request
    request.myComplexType.Property1 = "Blah";
    request.myComplexType.Property2 = "Kachoo";

    GetSomethingCompletedEventHandler handler = GetSomethingCompleted_Response;

    //.... ok now what?
    //handler.Invoke(???)
    // at this point I'm supposed to send an object for source (request maybe?)
    // and a new instance of GetSomethingCompletedEventArgs but that class is
    // asking for stuff that makes me think that is not the right idea.

}

void GetSomethingCompleted_Response(object source, GetSomethingCompletedEventArgs args)
{
    // get the result
    var result = args.Result;
}

我做错了什么?我错过了什么?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您不需要网络服务源代码。 Web服务可以用Java实现。创建服务引用也是一样的,因为我们真的不知道另一方面是什么。

因此,请尝试在VS2008中添加服务引用并输入工作Web服务的URL。 VS将检查服务器上的wsdl并为您生成所需的类。

从那时起,您只需将服务称为普通方法调用。这意味着您不必处理请求和http以及此类详细信息。所有这些都是对你隐藏的。除了在app.config中可以更改许多WCF设置。

答案 1 :(得分:0)

好的,我发现我需要找到一个Service类型的类。请参阅提及的SO Post

private com.nowhere.somewebservice ws;

问题是他们提供的课程不是我的智能感知,我认为这不是我想要的。

以下是我如何解决我的问题:

blah.webservice.SomeMainServiceClass service = new SomeMainServiceClass();
GetSomethingRequest request = new GetSomethingRequest();

// fill in the request
request.myComplexType.Property1 = "Blah";
request.myComplexType.Property2 = "Kachoo";

object myResponse = service.GetSomething(request);