-1

ブラウザを介してURLにアクセスしようとしていますが、問題はありませんが、プログラムは次のようにスローします 。java.io.IOException:サーバーがHTTP応答コードを返しました:URLの403:

ここで、URLは、 SharepointOnlineサーバー上のリストアイテムの添付ファイルパスに他なりません。そのファイルの内容を取得しようとしています。ブラウザから開かれますが、コードから例外がスローされます。

コード:

private String getAttachmentContent(String attachmentURL) throws IBSharePointException 
{
    InputStream is = null;

    try 
    {
        String fileName=attachmentURL.substring(attachmentURL.lastIndexOf("/")+1);
        String urlPath=attachmentURL.substring(0, attachmentURL.lastIndexOf("/")+1);
        fileName=URLEncoder.encode(fileName, "UTF-8");

        if(fileName.contains("+"))
            fileName=fileName.replace("+", "%20");          
        URL u=new URL(urlPath+fileName);    

        // Following Line Throws Exception : java.io.IOException: Server returned HTTP response code: 403 for URL:
        is = u.openStream();

        ByteArrayOutputStream bais = new ByteArrayOutputStream();
        byte[] byteChunk = new byte[4096];    
        int n;    
        while ( (n = is.read(byteChunk)) > 0 ) 
            { 
                bais.write(byteChunk, 0, n);                    
            }
    }catch(Exception e)
    {
        throw e;
    }
}

私は自分のコードですべての設定を行い、このトピックに関連するすべての可能な解決策を試しましたが、それでも機能しません。

4

3 に答える 3

1

403 Forbidden応答には、次の文書化された意味があります。

「サーバーはリクエストを理解しましたが、それを実行することを拒否しています。承認は役に立たず、リクエストは繰り返されるべきではありません。」

要求が禁止されている理由を確認するには、話しかけようとしているサーバーの管理者に連絡する必要があります。httpsが有効になっていないか、httpsの使用にまったく関係のない問題である可能性があります。

于 2012-09-02T05:48:47.333 に答える
0

URL/リソースへのアクセスは許可されていません。ここをチェックしてくださいhttp://en.wikipedia.org/wiki/HTTP_403

于 2012-09-02T05:33:29.763 に答える
0

最後に私たちは解決策を見つけ、以下は解決された問題です。

コード:

private String getAttachmentContent(String attachmentURL) throws IBSharePointException {
    InputStream inputStream = null;
    URLConnection urlConnection = null;
    URL url = null;
    ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
    byte[] byteChunk = new byte[4096];
    int noOfBytes = 0;
    try {

        String fileName = attachmentURL.substring(attachmentURL.lastIndexOf("/") + 1);
        String urlPath = attachmentURL.substring(0, attachmentURL.lastIndexOf("/") + 1);
        fileName = URLEncoder.encode(fileName, "UTF-8");
        //This line is to fix bug # 966837
        if (fileName.contains("+"))
            fileName = fileName.replace("+", "%20");

        url = new URL(urlPath + fileName);
        urlConnection = url.openConnection();
        urlConnection.addRequestProperty("User-Agent", _Constants.DEFAULT_USER_AGENT_WINDOWS);
        // We need to set cookies as below.
        urlConnection.addRequestProperty("Cookie", _mSharePointSession.cookieNedToken);

        urlConnection.connect();

        inputStream = urlConnection.getInputStream();

        while ((noOfBytes = inputStream.read(byteChunk)) > 0) {
            byteOutputStream.write(byteChunk, 0, noOfBytes);
        }

        return new BASE64Encoder().encode(byteOutputStream.toByteArray());

    } catch (Exception e) {
        throw e;
    }
}
于 2012-09-06T10:47:03.600 に答える