java - 在 Java 中使用服务帐户通过网络访问文件

标签 java jakarta-ee web weblogic-10.x

我正在尝试使用 Java 从网络位置读取文件。问题是访问该网络位置需要特定的凭据。

有没有办法在 Java 中指定这些凭据,然后通过网络访问该文件。

我正在尝试从在 Weblogic 上运行的 Web 应用程序执行此操作

谢谢, 阿布舍克

最佳答案

这是一个示例代码。

try {
        URL url  = new URL("https://www.visruthcv.appspot.com");
        URLConnection con = url.openConnection();

        HttpURLConnection httpUrlConnection = (HttpURLConnection) con;
        httpUrlConnection.setReadTimeout(10000);
        httpUrlConnection.setConnectTimeout(15000);
        httpUrlConnection.setRequestMethod("POST");
        httpUrlConnection.setDoInput(true);
        httpUrlConnection.setDoOutput(true);

        /*
         * for request headers
         */
        httpUrlConnection.setRequestProperty("Accept",
                "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        httpUrlConnection.setRequestProperty("Accept-Charset",
                "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        httpUrlConnection.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
        httpUrlConnection.setRequestProperty("Accept-Language", "en-US,en;q=0.8");
        httpUrlConnection.setRequestProperty("Connection", "keep-alive");


        /*
         * for adding request parameters
         */
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("username", "Visruth");
        params.put("password", "passwd");

        OutputStream os = httpUrlConnection.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getQuery(params));
        writer.flush();
        writer.close();
        os.close();

        httpUrlConnection.connect();

        // To write to a file, something like this
        InputStream is = httpUrlConnection.getInputStream();
        FileOutputStream fos = new FileOutputStream("/home/visruth/Desktop/photo2.jpg");
        int i = 0;
        byte[] b = new byte[1024];

        while((i = is.read(b)) != -1) {
            fos.write(b, 0, i);
        }

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

创建查询字符串:

//make needful changes for this method if any parameter has multiple values, eg: usernames = "Visruth", usernames = "visruth CV" and etc..
private static String getQuery(Map<String, Object> params)
            throws UnsupportedEncodingException {
        StringBuilder result = new StringBuilder();
        boolean first = true;

        for (Entry<String, Object> pair : params.entrySet() ) {


            if (first) {
                first = false;
            } else {
                result.append("&");
            }


            result.append(URLEncoder.encode(pair.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(pair.getValue().toString(), "UTF-8"));
        }

        return result.toString();
    }

关于java - 在 Java 中使用服务帐户通过网络访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329846/

相关文章:

java - 时间复杂度 : why O(nlogn)?

java - 使用常量字符串作为 Enum 构造函数参数

java - 获取失败断言的描述

jsf - @RequestScoped bean 实例是如何在运行时提供给 @SessionScoped bean 的?

performance - 我怎样才能提高这个架构的性能?

java - Eclipse 在将 GaussianBlur 与 OpenCV for Android 一起使用时出错

java - JAXB 是否支持 xsd :restriction?

java - JBoss 启动时调用 EJB 中的方法

javascript - 如何解码 XMLHttpRequest 中的十六进制?

javascript - 使用ajax在变量中获取另一个页面的内容