0

私はHttpClient'. I'm wondering if it is compatible with.asmx` Web サービスで遊んでいます。

次のような方法があるとします。

        var baseAddress = new Uri("Http://localhost/folder/WebServiceCommand.asmx/");          
        var config = new HttpSelfHostConfiguration(baseAddress);                      
        var server = new HttpSelfHostServer(config);

        using (var client = new HttpClient(server))
        {
            client.BaseAddress = baseAddress;

            var response = client.GetAsync("GetData").Result;

            Assert.IsTrue(
                        response.IsSuccessStatusCode, 
                        "Actual status code: " + response.StatusCode);
        }

まず、私がやろうとしていることは可能ですか、それとも古いHttpWebRequestクラスを使用する必要がありますか?

可能であれば、404 - NOT FOUND を返すのはなぜですか? アドレスをブラウザに貼り付ければOKです。

ありがとう

4

1 に答える 1

4

Web サービス ASMX エンドポイントで HttpClient を使用できます

        var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
        httpClient.DefaultRequestHeaders.Add("SOAPAction", "http://foo.com/GetVersion");

        var soapXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><GetVersion xmlns=\"http://foo.com/\" /></soap:Body></soap:Envelope>";

        var response = httpClient.PostAsync("http://foo.com/bar.asmx", new StringContent(soapXml, Encoding.UTF8, "text/xml")).Result;

        var content = response.Content.ReadAsStringAsync().Result;
于 2014-02-03T01:15:23.420 に答える