cancel
Showing results for 
Search instead for 
Did you mean: 

HTTP Receiver Adapter form-data

emorillo
Discoverer
0 Kudos

Hi,

I have a problem with scenario consuming an API form-data configuration.

Postman Configuration

java mapping code

package com.sap.mapping;
import java.io.*;
import java.net.HttpURLConnection;
import java.util.Map;

import com.sap.aii.mapping.api.StreamTransformation;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.sap.aii.mapping.api.StreamTransformationException;

import com.sap.aii.mapping.api.TransformationOutput;
@SuppressWarnings("deprecation")

public class BajaClientes implements StreamTransformation {

	private String boundary;
	private String boundary2;

	private static final String LINE_FEED = "\r\n";

    private HttpURLConnection httpConn;
    
	private String charset;

	private String body;

	private OutputStream outputStream;

	private PrintWriter writer;
	
	private String NombreServicio;
	private String Parametros;
	private String par1 ; 
	private String par2 ;

	public void execute(InputStream arg0, OutputStream arg1) throws StreamTransformationException {
		
		NombreServicio = "Baja_Clientes";
		Parametros  = "{\"pv_gpart_kk\":\"58175\",\"pv_vkont_kk\":\"4568\",\"pv_vtref_kk\":\"2145\",\"pv_anlag\":\"kmssdis\",\"pv_e_kofiz_sd\":\"PR\",\"pv_e_vbeginn\":\"20221220\",\"pv_e_vend\":\"20221220\"}";
        boundary = "--ejjeeffe1";
        boundary2 = "--ejjeeffe1--";
        
        par1 = "NombreServicio";
        par2 = "Parametros";
        
		body = boundary;
		body = body + LINE_FEED + "Content-Disposition: form-data; name=\"" + par1 + "\"" + LINE_FEED + LINE_FEED + NombreServicio + LINE_FEED;
		body = body + boundary;
		body = body + LINE_FEED + "Content-Disposition: form-data; name=\"" + par2 + "\"" + LINE_FEED + LINE_FEED + Parametros + LINE_FEED + LINE_FEED;
		
		
		byte[] message = body.getBytes();
		
		byte[] buffer = new byte[4096];

		ByteArrayOutputStream outbody = new ByteArrayOutputStream();

		try {

			arg1.write(message);

		} catch (IOException e) {

			e.printStackTrace();

		}

		String endchar = LINE_FEED + LINE_FEED + boundary2;
		
		try {

			arg1.write(endchar.getBytes());

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

    public void addFormField(String name, String value) {

  	  body =  boundary + LINE_FEED + "Content-Disposition: form-data; name=\"" + name + "\""

+ LINE_FEED + LINE_FEED

  			    + value + LINE_FEED;

  }
	@Override
	public void setParameter(Map arg0) {
		// TODO Auto-generated method stub
		
	}

}<br>

Communication channel configuration

Message Monitor

Any suggestions?

Regards

Accepted Solutions (0)

Answers (0)