从C#内部调用从控制台应用程序到我的Web应用程序的方法

时间:2017-01-21 04:53:39

标签: c# .net

我需要在C#中将控制台调用到Web应用程序方法。

我的代码在下面 -

控制台应用程序代码:

public static class Program
    {
       public static void Main(String[] args)
        {
         Console.Write("Waiting for call getData method...");
         Console.Read();
        }
    }

网络应用代码:

public class MyController : BaseController
    {

    [HttpGet]
    public string getData(string data)
    {
       return data;
    }
}

我只需要从控制台调用 getData(data)方法。

PLease建议。

2 个答案:

答案 0 :(得分:2)

你可以使用system.net.http来做到这一点。看看这篇MSDN文章。

Calling WebAPI from Console app

不要进入RunAsync和所有。只需使用HTTPClient来调用API。

这是完整的代码示例。 .................................

using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace HttpClientSample
{
public class Product
{
    public string Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public string Category { get; set; }
}

class Program
{
    static HttpClient client = new HttpClient();

    static void ShowProduct(Product product)
    {
        Console.WriteLine($"Name: {product.Name}\tPrice: {product.Price}\tCategory: {product.Category}");
    }

    static async Task<Uri> CreateProductAsync(Product product)
    {
        HttpResponseMessage response = await client.PostAsJsonAsync("api/products", product);
        response.EnsureSuccessStatusCode();

        // return URI of the created resource.
        return response.Headers.Location;
    }

    static async Task<Product> GetProductAsync(string path)
    {
        Product product = null;
        HttpResponseMessage response = await client.GetAsync(path);
        if (response.IsSuccessStatusCode)
        {
            product = await response.Content.ReadAsAsync<Product>();
        }
        return product;
    }

    static async Task<Product> UpdateProductAsync(Product product)
    {
        HttpResponseMessage response = await client.PutAsJsonAsync($"api/products/{product.Id}", product);
        response.EnsureSuccessStatusCode();

        // Deserialize the updated product from the response body.
        product = await response.Content.ReadAsAsync<Product>();
        return product;
    }

    static async Task<HttpStatusCode> DeleteProductAsync(string id)
    {
        HttpResponseMessage response = await client.DeleteAsync($"api/products/{id}");
        return response.StatusCode;
    }

    static void Main()
    {
        RunAsync().Wait();
    }

    static async Task RunAsync()
    {
        client.BaseAddress = new Uri("http://localhost:55268/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        try
        {
            // Create a new product
            Product product = new Product { Name = "Gizmo", Price = 100, Category = "Widgets" };

            var url = await CreateProductAsync(product);
            Console.WriteLine($"Created at {url}");

            // Get the product
            product = await GetProductAsync(url.PathAndQuery);
            ShowProduct(product);

            // Update the product
            Console.WriteLine("Updating price...");
            product.Price = 80;
            await UpdateProductAsync(product);

            // Get the updated product
            product = await GetProductAsync(url.PathAndQuery);
            ShowProduct(product);

            // Delete the product
            var statusCode = await DeleteProductAsync(product.Id);
            Console.WriteLine($"Deleted (HTTP Status = {(int)statusCode})");

        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }

        Console.ReadLine();
    }

}
}

答案 1 :(得分:1)

两者都是不同的应用程序,因此您可以添加Web应用程序作为控制台应用程序的参考,然后只需创建一个对象来访问getData(数据)