AS400上的getOutputStream()中的Java 1.4.2 IOException

时间:2016-03-23 23:45:46

标签: java ibm-midrange ioexception java1.4 iseries-navigator

我正在使用Java 1.4.2在AS400系统下工作,以获取XML但是当我使用getOutputStream()执行请求时,我收到了IOException,并且该消息只返回提供者的域。

这是我的代码的一部分:

onCreate

消息错误是“ERROR IOException:test.example.it”。

我使用Windows XP,Netbeans 4.1,Java 1.4.2 Build 19(AS400中的相同)在计算机上测试了我的代码,并且我没有遇到任何问题。

我可以将我的代码编译到AS400中,但是当我在QSHELL中运行该类或使用RPG程序时,我会收到错误。

有人知道我还有什么需要做或为什么会收到这个错误?

谢谢!

编辑:

它是一个POST方法,实际上我在代码中包含了setDoInput和setDoOutput。

现在打印异常我得到了这个:

  

java.net.UnknownHostException:test.example.it

     

错误IOException:test.example.it

编辑:

看起来nslookup无法解析域但在此之后我重试使用IP,现在我有这个错误......

  

java.net.SocketException:为参数指定的值不正确。
   ERROR IOException:为参数指定的值不正确。

我认为AS400安全性存在问题,我应该在列表中添加此域还是编辑系统值?

编辑:

使用TCPCFG然后选项10,在这个主机表中我没有域test.example.it,我想我需要添加这个域和IP,不是吗?

编辑:

版本为V6R1M0。我添加了IP(选项10​​.使用TCP / IP主机表条目),现在AS400解析了域,但现在我遇到了新问题。

  

java.net.ConnectException:远程主机拒绝尝试连接操作。

在选项12中,我在所有选项中都有* SAME。对于选项1,以下内容:

try {
  url = new URL("https://test.example.it/27/xml/"); //Example URL...
} catch(MalformedURLException exMAL) {
  return exMAL.getMessage();
}

//Set parameters
LinkedHashMap params = new LinkedHashMap();
params.put("id", id);
params.put("password", password);
...
params.put("description", description);

String data = "";
Set set = params.entrySet();
Iterator i = set.iterator();

//Create URL of parameters
while(i.hasNext()){
if(data != ""){
  data += "&";
}
Map.Entry me = (Map.Entry)i.next();
  data += me.getKey() + "=" + me.getValue();
}

try {
  //Create connection
  conn = (HttpURLConnection) url.openConnection();
  conn.setRequestMethod("POST");
  conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  conn.setDoInput(true);
  conn.setDoOutput(true);
  conn.setUseCaches(false);

  //Do request
  OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); //Error here
  wr.write(data);
  wr.flush();

  //Get resource
  InputStream is = conn.getInputStream();
  outputData = readAll(is);
  } catch (IOException ioEx) {
    return "ERROR IOException: " + ioEx.getMessage();
  }

我在一个群组中发现:“是400上的8080端口.400设置是否通过SSL接受8080流量”

我怎样才能让400接受流量?

1 个答案:

答案 0 :(得分:0)

最后我解决了我的问题,在主机表中添加了IP和域(正如我在编辑中提到的那样),但这是另一个问题。

提供商为我提供了一个用于请求的IP和两个用于响应的IP,我在主机表中添加了三个具有相同域的IP。我删除了三个IP中的两个,然后我尝试仅使用IP请求它并且它有效!

现在问题是通过Java的请求太慢了!但这是另一个话题。非常感谢你们。