首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Java调用

使用Java调用
EN

Stack Overflow用户
提问于 2017-10-27 01:54:19
回答 1查看 1.7K关注 0票数 2

我有一个java,它应该调用一个ASP.NET添加的Web服务。当我运行java服务并输入url http://localhost:8080/addition/9/6时,就会得到{"firstNumber":9,"secondNumber":6,"sum":15}作为输出数据。现在,我希望在运行ASP.NET Web应用程序时使用ASP.NET Web来调用和显示这些数据。我该怎么做呢?

这是我的密码:

ASP.NET Web代码

RestfulClient.cs

代码语言:javascript
运行
复制
public class RestfulClient     
{
    private string BASE_URL = "http://localhost:8080/addition/";
    public Task<string> addition()
    {
        {
            try
            {
                var client = new HttpClient();
                client.BaseAddress = new Uri(BASE_URL);
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage response = client.GetAsync("addition").Result;
                return response.Content.ReadAsStringAsync();                 
            }
            catch (Exception e)
            {
                HttpContext.Current.Server.Transfer("ErrorPage.html");
            }
            return null;
        }
    }
}

ApiController.cs

代码语言:javascript
运行
复制
private RestfulClient restfulClient = new RestfulClient();

    public ActionResult Index()
    {

        var Result1 = restfulClient.addition().Result;
        return Content(Result1);
    }

Java服务代码

AdditionController.java

代码语言:javascript
运行
复制
@RestController
public class AdditionController {

private static final String template = " %s";
private static int getSum;

@RequestMapping("/addition/{param1}/{param2}")
@ResponseBody 

public Addition getSum 
            (@PathVariable("param1") int firstNumber,@PathVariable("param2") int secondNumber) {
return new Addition(
        (String.format(template, firstNumber)), String.format(template, secondNumber));
  }
}  

谁来帮帮我。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 04:11:52

根据Java服务,您从客户端调用的URL没有根据您的基本URL和GetAsync中使用的URL正确格式化。

代码语言:javascript
运行
复制
public class RestfulClient {
    private static HttpClient client;
    private static string BASE_URL = "http://localhost:8080/";

    static RestfulClient() {
        client = new HttpClient();
        client.BaseAddress = new Uri(BASE_URL);
        client.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));
    }

    public async Task<string> addition(int a, int b) {
        try {
            var endpoint = string.Format("addition/{0}/{1}", a, b);
            var response = await client.GetAsync(endpoint);
            return await response.Content.ReadAsStringAsync();                 
        } catch (Exception e) {
            HttpContext.Current.Server.Transfer("ErrorPage.html");
        }
        return null;
    }
}

还需要更新控制器。

代码语言:javascript
运行
复制
public async Task<ActionResult> Index() {
    int a = 9;
    int b = 6;
    var result = await restfulClient.addition(a, b);
    return Content(result);
}

注意注释中建议的HttpClient的正确使用,以及异步/等待的使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46966362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档