Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notes with attachment not working #43

Open
arams opened this issue Mar 1, 2017 · 0 comments
Open

Notes with attachment not working #43

arams opened this issue Mar 1, 2017 · 0 comments

Comments

@arams
Copy link

arams commented Mar 1, 2017

I use below code for uploading a note with attachments. But I received following error in response.

errorcode 400 - {"description":"Validation failed","errors":[{"field":"body","message":"It should be a/an String","code":"missing_field"}]}

If i comment out following line, able to upload body alone.

meb.addBinaryBody("attachments[]", attach2,
ContentType.TEXT_PLAIN.withCharset("utf-8"), attach2.getName());

`
public static String getArrayForUrlPostv2(String urlString) {

    try {

        final HttpClientBuilder hcBuilder = HttpClientBuilder.create();
        final RequestBuilder reqBuilder = RequestBuilder.post();
        final RequestConfig.Builder rcBuilder = RequestConfig.custom();

        // URL object from API endpoint:
        URL url = new URL(urlString);
        final String urlHost = url.getHost();
        final int urlPort = url.getPort();
        final String urlProtocol = url.getProtocol();
        reqBuilder.setUri(url.toURI());

        // Authentication:
        List<String> authPrefs = new ArrayList<>();
        authPrefs.add(AuthSchemes.BASIC);
        rcBuilder.setTargetPreferredAuthSchemes(authPrefs);
        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(
                new AuthScope(urlHost, urlPort, AuthScope.ANY_REALM),
                new UsernamePasswordCredentials(PreferenceMgr.getString(PreferenceMgr.KEY_AGENT_EMAIL),
                                                PreferenceMgr.getString(PreferenceMgr.KEY_AGENT_PASSWORD)));
        hcBuilder.setDefaultCredentialsProvider(credsProvider);
        AuthCache authCache = new BasicAuthCache();
        AuthSchemeBase authScheme = new BasicScheme();
        authCache.put(new HttpHost(urlHost, urlPort, urlProtocol), authScheme);
        HttpClientContext hccContext = HttpClientContext.create();
        hccContext.setAuthCache(authCache);

        // Body:
        MultipartEntityBuilder meb = MultipartEntityBuilder.create();
        meb.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);


        File attach2 = ApplicationNekt.getContext().getFileStreamPath(Constants.LogFileName + ".txt");
        meb.addBinaryBody("attachments[]", attach2,
                ContentType.TEXT_PLAIN.withCharset("utf-8"), attach2.getName());

        //meb.addTextBody("body", "testing");
        meb.addTextBody("body", "test", ContentType.TEXT_PLAIN);
        meb.addTextBody("private", "true", ContentType.TEXT_PLAIN);


        reqBuilder.setEntity(meb.build());

        // Execute:
        RequestConfig rc = rcBuilder.build();
        reqBuilder.setConfig(rc);

        HttpClient hc = hcBuilder.build();
        HttpUriRequest req = reqBuilder.build();
        HttpResponse response = hc.execute(req, hccContext);


        // Print out:
        HttpEntity body = response.getEntity();
        InputStream is = body.getContent();
        BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("utf-8")));
        String line;
        StringBuilder sb = new StringBuilder();
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        int response_status = response.getStatusLine().getStatusCode();
        String response_body = sb.toString();

        Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "Response Status: " + response_status);
        Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "Body:\n");
        Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, response_body);
        if (response_status > 400) {
            Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "X-Request-Id: " + response.getFirstHeader("x-request-id").getValue());
        } else if (response_status == 201) {
            //For creation response_status is 201 where are as for other actions it is 200
            try {
                Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "Update Successfull");
                //Creating JSONObject for the response string
                JSONObject response_json = new JSONObject(sb.toString());
                Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "Ticket ID: " + response_json.get("id"));
                return "success";
                //Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "Location : " + response.getFirstHeader("location").getValue());
            } catch (JSONException e) {
                Utilities.writeToLogFile(Constants.LOG_ERROR_LEVEL, "Error in JSON Parsing\n :" + e);
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;

`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant