Solved

Saving WebDav resource into ByteArray or InputStream

Posted on 2004-09-01
27
399 Views
Last Modified: 2008-02-01

Hello all

this the process to save the WebDAV resource to the file
  webDavResourceAttachmentFile.getMethod(new File(strAttachmentFile));


But I wanted to have this in other way.

It should save to either ByteArray or InputStream

How can I do this??

I um using Apache HttpClient and Slide API for this

thanks
Sudhakar
0
Comment
Question by:sudhakar_koundinya
  • 13
  • 11
  • 3
27 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950752
Read it into a ByteArrayInputStream
0
 
LVL 92

Expert Comment

by:objects
ID: 11950756
what class is webDavResourceAttachmentFile

> It should save to either ByteArray or InputStream

that'll be an output stream wouldn't it :)
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950760
yes, But how??
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950769
webDavResourceAttachmentFile is of type org.apache.webdav.lib.WebdavResource
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950774
What is the f-q name of the thing you're reading from?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950786
>>that'll be an output stream wouldn't it :)

Yes ;-)

while ((bytesRead = in.read(buffer)) > -1) {
    baos.write(buffer, 0, bytesRead);
}
byte[] resourceAsBytes = baos.toByteArray();
// close everything
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950790
>> f-q name??

I didn't get that

basically above code snippet downloads the WebDavResoure from MSExchange Server and saves it into file
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950806
>>Yes ;-)

that is not OutputStream object my friend. That is WebDavResource
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950807
(f-q == fully qualified)

Can't find JavaDoc for that f-q name
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950816
The code i possted above should work fine. 'in' is simply an InputStream opened on the resource
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950824
this is online doc for WebDavClient API

http://jakarta.apache.org/slide/clientjavadoc/index.html
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950843
>> The code i possted above should work fine. 'in' is simply an InputStream opened on the resource

Until and unless API supports that
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950851
byte[] resourceAsBytes = wdr.getMethodDataAsString().getBytes();
0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950855
0
 
LVL 86

Assisted Solution

by:CEHJ
CEHJ earned 125 total points
ID: 11950862
...and if the resource is not character data:

InputStream in = getMethodData();
// etc as above
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950864
wdr.getMethodDataAsString().getBytes(); will not work for binary files :(
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950866
>>but always returning 0 bytes

Then the path to the data may be wrong
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950879
>>Then the path to the data may be wrong

No if that is the case my first snippet also should not work. But it is working
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950901
Are you calling your code first? - perhaps you need to
0
 
LVL 92

Expert Comment

by:objects
ID: 11950914
Have a look at the source code, it could give you some clues as to what its doing.
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950920
>> Are you calling your code first? - perhaps you need to

I didn't get that. But I am doing everything in sequential order only

I just found one more code. I will check that and let u know

            org.apache.commons.httpclient.methods.UrlGetMethod getMethod= new                          org.apache.commons.httpclient.methods.UrlGetMethod(uri);
            int status=client.executeMethod(getMethod);
            System.out.println(status);
            byte is[]=getMethod.getResponseBody();
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950940
This is my modified method

  protected void saveAttachment(String folder, String filename,
                                String strAttachmentName,
                                String mailbox) throws
      MSExchangeServerException {

    try {

      strAttachmentName = URLDecoder.decode(strAttachmentName);
      org.apache.commons.httpclient.HttpURL urlEML = (org.apache.commons.
          httpclient.HttpURL) getURL(path + "/" +
                                     mailbox + "/" + folder + "/" + filename +
                                     "/" + strAttachmentName +
                                     "/");

      if (urlEML == null) {
        return;
      }

      /*org.prithvi.docparser.microsoft.msexchange.apache.OwaWebdavResource
          webDavResourceAttachmentFile =
          getWebResource(urlEML);

      if (webDavResourceAttachmentFile == null) {
        return;
      }*/

        String uri= path + "/" + mailbox + "/" + folder + "/" + replaceSpecial(filename, "\":?*<>\\| ")+"/" + replaceSpecial( strAttachmentName , "\":?*<>\\| ");
        //String uri= path + "/" + mailbox + "/" + folder + "/" + filename +"/" + strAttachmentName ;
        System.out.println(uri);

        

            org.apache.commons.httpclient.methods.UrlGetMethod getMethod= new org.apache.commons.httpclient.methods.UrlGetMethod(uri);
            int status=client.executeMethod(getMethod);
            System.out.println(status);
            //byte is[]=getMethod.getResponseBody();

      //get the attachment
      String strAttachmentFile = targetPath + "/" + mailbox + "/" + folder +
          "/" + filename.replaceAll(":", "%3A") + "_Dir/" + strAttachmentName;

      if (targetPath != null) {
        //webDavResourceAttachmentFile.getMethod(new File(strAttachmentFile));
            //InputStream is= webDavResourceAttachmentFile.getMethodData();
            //String str=webDavResourceAttachmentFile.getMethodDataAsString();
            //System.out.println(str);
      }
        /*if (targetPath != null)
        {
            FileOutputStream mailStream = new FileOutputStream(strAttachmentFile);
            mailStream.write(is);
            mailStream.close();
            mailStream = null;
        }*/
       
      

    }
    catch (Exception ex) {

      throw new MSExchangeServerException(
          "Unknown Exception raised while saving the attachment", ex);
    }
  }
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11950952
I will let u know if that works  :-)
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11950955
0
 
LVL 92

Accepted Solution

by:
objects earned 125 total points
ID: 11951010
yes I was looking at that earlier, but thought you needed to use the instance you already had.
you can also trry looking at the getResponseBodyAsStream() method
0
 
LVL 14

Author Comment

by:sudhakar_koundinya
ID: 11957498
Although, I have solved my problem for closing the question I splitted the points

Thanks
Sudhakar
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11968955
:-)
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
powerN  challenge 3 47
topping2 challenge 13 59
JList custom Cell Renderer refresh 15 43
GUI builder for Eclipse? 8 11
INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This video teaches viewers about errors in exception handling.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now