测试对Web API .Net的Java RESTful调用

时间:2016-07-18 19:36:29

标签: java c# rest asp.net-web-api http-headers

我有一个奇怪的问题。我正在开发一个Java项目,我们需要对我们的WEB API进行HTTP GET / POST调用。我想用C#做一个WebAPI测试项目;在本地运行它(在一些随机端口上的localhost)并确保我发送正确的东西。这样我就可以控制发回的内容(成功,错误,JSON,XML以及类似的不同变量)。

到目前为止,我有一些关键的东西:

客户端-Java代码:

[DbFunction("MyContext", "GetSchools")]
public IQueryable<School> GetSchools()
{
  ...

Server-C#.Net代码(使用fiddler和浏览器测试):

public String sendAPIRequest( HttpRequestMethod method, String apiURI, String payload) throws IOException
{
    // Method is GET, POST....
    // apiURL specific API navigating to.
    // pauload is the html body.

    if(payload == null)
    {
        payload = "";
    }

    // Establish a connection.
    String strURL = String.format("%s%s", this.BaseURL, apiURI);
    URL url = new URL(strURL);
    HttpURLConnection conn =  (HttpURLConnection)url.openConnection();
    conn.setRequestProperty("Accept-Charset", this.CHARSET);
    conn.setRequestMethod(method.toString());
    conn.setRequestProperty("Content-Type", "text/json;charset=" + this.CHARSET);
    conn.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
    conn.setRequestProperty("Accept","*/*");
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.connect();

    // write the payload out, if it exists.
    //if(payload != null)
    {
        try(OutputStream output = conn.getOutputStream())
        {
            output.write(payload.getBytes(CHARSET));
        }
    }

    // read the response.
    StringBuilder response = new StringBuilder();

    InputStream input = conn.getInputStream();

    try(Scanner inputScanner = new Scanner(input))
    {
        while(inputScanner.hasNextLine())
        {
            response.append((inputScanner));
        }
    }

    return response.toString();

}

public String CheckForApplicableLicenses(String dCode, String key)
{
    String result;
    try
    {
        String APICall = String.format("/license/find_matching?d_code=%s&key=%s", dCode, key);               

        String Response = API.sendAPIRequest(HttpRequestMethod.GET, APICall);           

        // TODO Parse the String Response JSON/XMl.

        result =  Response;
    }
    catch(Exception ex)
    {
        // TODO: incorporate some sort of logging and error handling.
        result = ex.toString();
    }
    return result;
}

到目前为止的结果: 我收到了404错误,而且我已经能够连接了。大多数时候,当我创建InputStream时,Java客户端会崩溃。我从来没能在C#服务器上跳过断点。

问题:

1)我正在做什么甚至可行?在我准备好之前,我真的只是在不调用API的情况下尝试测试Java客户端。也许它与未在默认HTTP端口80上运行服务有关?

2)有更好的测试方法吗?在完成之前,我不想打电话给我们的实际服务。

提前感谢您的帮助。

0 个答案:

没有答案