Sisense - REST API - 重新发布不工作+ 500内部服务器错误

时间:2018-01-02 06:36:34

标签: json rest api

使用JAVA,我正在尝试将仪表板重新发布给特定用户。它返回HTTP状态500.下面是它的代码。

String sisenseURL = surl; // This is correct URL to POST API for PUBLISH


String urlParameters = "force=true";
 byte[] postData = urlParameters.getBytes( StandardCharsets.UTF_8 );
 int postDataLength = postData.length;

 URL url = new URL( sisenseURL );
 HttpURLConnection conn= (HttpURLConnection) url.openConnection();

 conn.setDoOutput(true);
 conn.setInstanceFollowRedirects(false);
 conn.setRequestMethod("POST");
 conn.setRequestProperty("Content-Type", "application/json");
 conn.setRequestProperty("Accept", "application/json");
 conn.setRequestProperty("Content-Length", Integer.toString(postDataLength ));
 conn.setRequestProperty("Authorization", accessToken);
 conn.setUseCaches(false);



 try(DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
 wr.write( postData );
 }



 BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
 final StringBuffer stringBuffer = new StringBuffer();
 String line;
 while ((line = in.readLine()) != null) {
 stringBuffer.append(line);
 }
 in.close();

请求使用POSTMAN以及Sisense的Swagger UI运行文件。

非常感谢任何帮助。

TIA

Ashutosh说

1 个答案:

答案 0 :(得分:1)

以下是使用其余API更新仪表板共享的sisense V6.7的java示例 你没有分享你的有效载荷,所以不确定这是否是问题,但下面的例子对我有用。 我从here

获取了sendPostRequest代码
import java.io.*;
import java.net.*;

public class Runner {
    public static void main(String[] args){
        try {
            //Dashboard shares payload
            String payload = "{\"sharesTo\":[{\"shareId\":\"58504c5221785b627cb4361d\",\"type\":\"user\",\"subscribe\":false},{\"shareId\":\"58505ba6ec4df9701a000019\",\"type\":\"user\",\"rule\":\"view\",\"subscribe\":false}]}";


            String str = sendPostRequest(getDashboardUrl(), payload);

            System.out.println("Done");
        }
        catch (RuntimeException e){

        }
    }

    public static String sendPostRequest(String requestUrl, String payload) {
        try {
            URL url = new URL(requestUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Accept", "application/json");
            connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            connection.setRequestProperty("Authorization", getAuthorization());
            OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
            writer.write(payload);
            writer.close();
            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuffer jsonString = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                jsonString.append(line);
            }
            br.close();
            connection.disconnect();
            return  jsonString.toString();
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());

        }

    }
    public static String getDashboardUrl(){
        //Sisense domain
        String baseURL = "http://localhost:8081";

        return baseURL + "/api/shares/dashboard/5850511cec4df9701a000013";
    }

    public  static String getAuthorization(){
        return "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiNTg1MDRjNTIyMTc4NWI2MjdjYjQzNjFkIiwiYXBpU2VjcmV0IjoiOGUwZDIyOWItY2VmMS0xYTE4LTNhYWEtYmY1ZmE1ZmNkNTExIiwiaWF0IjoxNTE1MDEzMzkxfQ.zgx0Nv8YztfM2rm5WTCnJ0R6C_n5V-HNkEZgAcINfs4";
    }
}