我具有以下功能:
private Document readResponse(String pageId,String postId) throws Exception {
String request="https://www.facebook.com/"+pageId+"/posts/"+postId+"/?
HttpResponse hResponse;
hResponse = hrHandler.executeGet(request, headerParameters,null, null);
Document doc =Jsoup.parse(hResponse.getBody());
return doc;
我想在以下两个函数中使用它的结果,这意味着我想一次调用它:
private Integer getObject1(String pageId,String postId) throws Exception {
String[] a=null;
Elements e=doc.getElementsByTag("script");
Pattern p =Pattern.compile("----:(.*?(?=\\\\s\\\\w+=|$))");//\\\\d+");;
for(Element el:e) {
//.contains("(TimeSlice)")) {
Matcher m = p.matcher(el.data());
while(m.find()){
a=m.group().split(",");
}
}
return Integer.parseInt(a[0].replace("anything :",""));
}
private Integer getComments1(String pageId,String postId) throws Exception {
String[] a=null;
Document doc =readResponse( pageId, postId);
Elements e=doc.getElementsByTag("script");
Pattern p =Pattern.compile("mystring1:(.*?(?=\\\\s\\\\w+=|$))");
for(Element el:e) {
//.contains("(TimeSlice)")) {
Matcher m = p.matcher(el.data());
while(m.find()){
a=m.group().split(",");
}
}
return Integer.parseInt(a[0].replace("something:",""));
}
如何在没有两次调用readResponse()函数的情况下执行此操作?提前致谢。
答案 0 :(得分:0)
如果将Document传递给这两种方法,则可以执行以下操作。
public static void main(String[] args) {
Document doc=readResponse("","");
Integer i=getObject1(doc);
Integer comments=getComments1(doc);
}
和
private Integer getObject1(Document doc) throws Exception
private Integer getComments1(Document doc) throws Exception
答案 1 :(得分:0)
您可以从这两种方法的外部而不是内部调用readResponse
。您需要更改每种方法,以将Document
和pageId
用作参数。因此方法签名可能看起来像这样。
postId
然后,当您打电话给他们时,您会写类似
private Integer getObjectFromDocument(Document document) throws Exception
private Integer getCommentsFromDocument(Document document) throws Exception
答案 2 :(得分:0)
如果您不想多次调用该方法,则可以在启动方法中调用该方法并将其存储在某些Document变量中,您可以将其作为参数传递给所有需要此方法的方法。您只需在调用方法中声明一个附加参数。