cancel
Showing results for 
Search instead for 
Did you mean: 

BO SDK和RESTful web service的集成问题

former_member197088
Participant
0 Kudos

公司JAVA工程师没有接触过RESTful web services和JAVA的集成,由于之前一直使用的是ReportEngine SDK实现TOKEN,超链,权限表查看等,做了JAVA的portal和非定制化的提示页面,需要提取WEBI的prompt,看了相关的许多资料,知道原理是怎么回事,先"POST"TOKEN数据到HTTP的header,然后再GET出WEBI的prompt,相关代码的语法问题不大清楚,想咨询下这个具体是怎么调用应用程序的。求大神赐教。

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

通过Java调用Restful web service SDK的基本语法您可以参照下面的KBA:

1917322 - How to export a Web intelligence report to .csv format using RestFul Webservices SDK?

然后请根据您的实际需求,参照web service的SDK用户手册,调用具体的API。

former_member197088
Participant
0 Kudos

你好,你给的链接点不了。

0 Kudos

我把主要内容发给你:
这是一个把webi报表导成.csv格式的例子代码。
<%@ page import =  "java.io.BufferedReader" %>;
<%@ page import =  "java.io.BufferedWriter" %>;
<%@ page import =  "java.io.File" %>;
<%@ page import =  "java.io.FileWriter" %>;
<%@ page import =  "java.io.IOException" %>;
<%@ page import =  "java.io.InputStreamReader" %>;
<%@ page import = "java.io.OutputStreamWriter" %>;
<%@ page import =  "java.net.HttpURLConnection" %>;
<%@ page import =  "java.net.MalformedURLException" %>;
<%@ page import =  "java.net.ProtocolException" %>;
<%@ page import =  "java.net.URL" %>;
<%@ page import =  "org.json.simple.JSONObject" %>;
<%@ page import =  "org.json.simple.parser.JSONParser" %>;
<%@ page import =  "org.json.simple.parser.ParseException" %>;
<%
try
{
URL url = new URL("http://localhost:6405/biprws/raylight/v1/documents/7485/dataproviders/DP0/flows/0");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "text/plain");String logonToken = "\"" + getLogonToken() + "\"";
conn.setRequestProperty("X-SAP-LogonToken", logonToken);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();
if (conn.getResponseCode() != 200) {
  throw new RuntimeException("Failed : HTTP error code : "
    + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
   (conn.getInputStream())));
String output;
String path = "C://rest.csv"; //Specify the location and name for the exported file to be saved
File f1 = new File(path);f1.createNewFile();
FileWriter fw = new FileWriter(f1);
BufferedWriter bw = new BufferedWriter(fw);
while ((output = br.readLine()) != null) {
  bw.write(output);
  bw.write("\n");
}
bw.close();conn.disconnect();out.println("The report is exported successfully at location " + path);
} catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (ProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ParseException e)
{
e.printStackTrace();
}
%>
<%
public static String getLogonToken() throws ParseException, IOException {
    String logontoken = null;   
URL url = new URL("http://localhost:6405/biprws/logon/long/");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Accept", "application/json");
    conn.setRequestProperty("Content-Type", "application/xml; charset=utf-8");
    conn.setDoInput(true);
    conn.setDoOutput(true);
    String body = "<attrs xmlns=\"http://www.sap.com/rws/bip\">"
            + "<attr name=\"userName\" type=\"string\">Administrator</attr>"
            + "<attr name=\"password\" type=\"string\">Password1</attr>"
            + "<attr name=\"auth\" type=\"string\" possibilities=\"secEnterprise,secLDAP,secWinAD\">secEnterprise</attr>"
            + "</attrs>";

    int len = body.length();
    conn.setRequestProperty("Content-Length", Integer.toString(len));
    conn.connect();

    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
    out.write(body, 0, len);
    out.flush();
    if (conn.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
    }

    BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));
    String jsontxt = br.readLine();
    JSONParser parser = new JSONParser();
    JSONObject json = (JSONObject) parser.parse(jsontxt);
    logontoken = (String) json.get("logonToken");
    conn.disconnect();

    return logontoken;
}
%>

former_member197088
Participant
0 Kudos

找到类似的代码,正在看怎么改,看到这些更加确定了,谢谢帮助。

former_member197088
Participant
0 Kudos

用这段代码报错,public static String getLogonToken() throws ParseException, IOException这段报了3个错误。另外我想改上面的URL的话只需要修改上半段的代码对吧?

0 Kudos

代码中前两个URL,还有用户名密码都要根您实际系统信息一致。

former_member197088
Participant
0 Kudos

好的,谢谢。

former_member197088
Participant
0 Kudos

报错的原因是啥呢,怎么处理?报错信息是Multiple annotation found at this line:

-Syntax error on token"throws", invalid Type

-Syntax error on token"String",@expected

-Syntax error on token";" to complete

LocalVaribleDeclarationStatement

former_member197088
Participant
0 Kudos

非常感谢,我已经用其他办法把需要的提示对象提取出来了。

Answers (0)