On Sat, Jul 27, 2013 at 2:27 PM, sebb <[email protected]> wrote:

> On 27 July 2013 13:20, Philippe Mouawad <[email protected]>
> wrote:
> > There is no difference, that's why it would be nice to use Http Sampler.
>
> There must be something about the current sampler GUI that is not
> suitable, otherwise surely there would be no need to change anything?
>

Well I don't see how as a user you can specify you want to do SOAP +
Attachment


> I don't undertstand what you are proposing.
>
> I am working on this :
https://issues.apache.org/bugzilla/show_bug.cgi?id=53628

Today how can you implement Soap With Attachment in JMeter ?
>From my understanding it's not possible, am I wrong ?



> I don't want the full details of code changes at this point, just some
> idea of what might need to be changed.
>
>
In HttpHC4Impl , the sendPostData would need to be changed , a new
condition testing for Soap with Attachment would use part of the code I
showed below.
HttpSamplerBase#getUseMultipartForPost  would need to be changed as for
Soap+Attachment, this condition is  also true:
if(HTTPConstants.POST.equals(getMethod()) && (getDoMultipartPost() ||
(files.length > 0 && !getSendFileAsPostBody())))


In GUI, we would also need to add an new column for files to upload
specifying the way they are attached, value could be:
- XOP, would use code below, see http://www.w3.org/TR/soap12-mtom/
- Base64 , would compute a Base64 from attached file, see
http://www.w3.org/TR/SOAP-attachments
- Mime, would use regular attachment (but it's not priority for me), see
http://www.w3.org/TR/SOAP-attachments

 > See current code for generation of stream, I would need at some step to
> do
> > this :
> >
> > writer.writeMessage(message, outputStream that I would get from
> HTTPClient);
> >
> >
> >
> >
> ----------------------------------------------------------------------------------------------------------------------------------
> >
> > import java.io.IOException;
> > import java.util.HashMap;
> > import java.util.LinkedHashMap;
> > import java.util.Map;
> >
> > import org.apache.james.mime4j.MimeException;
> > import org.apache.james.mime4j.dom.Header;
> > import org.apache.james.mime4j.dom.MessageWriter;
> > import org.apache.james.mime4j.dom.Multipart;
> > import org.apache.james.mime4j.dom.TextBody;
> > import org.apache.james.mime4j.field.DefaultFieldParser;
> > import org.apache.james.mime4j.message.BodyPart;
> > import org.apache.james.mime4j.message.DefaultMessageWriter;
> > import org.apache.james.mime4j.message.HeaderImpl;
> > import org.apache.james.mime4j.message.MessageImpl;
> > import org.apache.james.mime4j.message.MultipartImpl;
> > import org.apache.james.mime4j.storage.StorageBodyFactory;
> >
> > public class TestMime4j {
> >
> >     public static void main(String[] args) throws IOException,
> > MimeException {
> >         MessageImpl message = new MessageImpl();
> >
> >      // Date and From are required fields
> >
> >         // Message-ID should be present
> >         //message.createMessageId("machine.example");
> >
> >         Multipart multipart = new MultipartImpl("related");
> >
> >         // first part is text/plain
> >         StorageBodyFactory bodyFactory = new StorageBodyFactory();
> >         BodyPart textPart = createTextPart(bodyFactory, "<soap:Envelope
> > xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\
> "></soap:Envelope>");
> >         multipart.addBodyPart(textPart);
> >
> >         // setMultipart also sets the Content-Type header field
> >
> >         Map<String, String> map = new LinkedHashMap<String, String>();
> >         map.put("type", "text/xml");
> >         map.put("start", "<[email protected]>");
> >         map.put("start-info", "text/xml");
> >         message.setMultipart(multipart, map);
> >
> >         //message.setBody(mul,  "application/xop+xml", map);
> > //        header.addField(
> > DefaultFieldParser.parse("type=application/xop+xml"));
> >  //       message.setHeader(header);
> >         // 4) print message to standard output
> >
> >         MessageWriter writer = new DefaultMessageWriter();
> >         writer.writeMessage(message, System.out);
> >
> >         // 5) message is no longer needed and should be disposed of
> >
> >         message.dispose();
> >     }
> >
> >     /**
> >      * Creates a text part from the specified string.
> >      * @throws MimeException
> >      */
> >     private static BodyPart createTextPart(StorageBodyFactory
> bodyFactory,
> > String text) throws MimeException {
> >         // Use UTF-8 to encode the specified text
> >         TextBody body = bodyFactory.textBody(text, "UTF-8");
> >         Header header = new HeaderImpl();
> >         header.addField(
> >                 DefaultFieldParser.parse("Content-ID: <
> > [email protected]>"));
> >         // Create a text/plain body part
> >         BodyPart bodyPart = new BodyPart();
> >         bodyPart.setHeader(header);
> >         Map<String, String> map = new HashMap<String, String>();
> >         map.put("type", "text/xml");
> >         map.put("charset", "UTF-8");
> >
> >         bodyPart.setBody(body, "application/xop+xml", map);
> >         bodyPart.setContentTransferEncoding("8bit");
> >
> >         return bodyPart;
> >     }
> > }
> >
> > On Sat, Jul 27, 2013 at 2:13 PM, sebb <[email protected]> wrote:
> >
> >> On 27 July 2013 13:02, Philippe Mouawad <[email protected]>
> >> wrote:
> >> > Hello,
> >> > I have started implementing Soap With Attachment  (MTOM+XOP) and I was
> >> > wondering what's the best option for GUI.
> >> >
> >> > 1) Use HttpSampler. The problem is that it is already very rich and I
> >> don't
> >> > know how user could tell he want's SOAP with Attachment.
> >> >
> >> > 2) Create a new GUI but it would be very close from Http Sampler one
> and
> >> I
> >> > don't want to duplicate code
> >> >
> >> > What's your opinions ?
> >>
> >> What are the differences from standard HTTP?
> >>
> >> > Regards
> >> > Philippe
> >>
> >
> >
> >
> > --
> > Cordialement.
> > Philippe Mouawad.
>



-- 
Cordialement.
Philippe Mouawad.

Reply via email to