我在Indivo服务器上有一个oAuth登录的java代码。当我从终端运行它时它工作得很好。现在,我想将它转换为Android应用程序,做同样的事情。为了将这个原始java代码转换为正在运行的Android应用程序,我需要包含哪些必要的更改?
当我复制相同的代码并导入必要的包时,它会在类定义和主声明中给出错误。它说“主要方法不能声明为静态”。
这是java代码:
公共类ChromeTest {
private Map<String, Object> options = null;
private String recordId = null;
private String recordId_second = null;
private String appId = "chrome@apps.indivo.org";
private String problemApp = "problems@apps.indivo.org";
private Properties properties = null;
private String sessionToken = null;
private String sessionTokenSecret = null;
private String sessionToken_second = null;
private String sessionTokenSecret_second = null;
private String pagingOrderingQuery = null;
private String extrnlRandom = null;
private XPath xpath = null;
private DatatypeFactory dtf = null;
private XMLGregorianCalendar gregCal = null;
private String demographicsDoc =
"<Demographics xmlns=\"Demographics\">"
+ "<dateOfBirth>2009-11-02T00:40:30+00:00</dateOfBirth>"
+ "</Demographics>";
private String contactDoc =
"<Contact xmlns=\"Contact\">"
+ "<name><fullname>nameForTestDocument</fullname><givenName/><familyName/></name>"
+ "<email type=\"work\">nathan.finstein@childrens.harvard.edu</email>"
+ "<address type=\"home\"><streetAddress>1 one way</streetAddress>"
+ "<postalCode>12345</postalCode>"
+ "<locality>ames</locality>"
+ "<region>Colorado</region>"
+ "<country>USA</country></address>"
+ "<location type=\"home\"><latitude>90</latitude><longitude>90</longitude></location>"
+ "</Contact>";
String testDocExtrnl = "<Testing123>strictly for testing - external from chrome</Testing123>";
String testDocStatus = "<Testing123>strictly for testing Status from chrome</Testing123>";
String testDocRelate_A = "<Testing123>strictly for testing Relate from chrome A</Testing123>";
String testDocRelate_B = "<Testing123>strictly for testing Relate from chrome B</Testing123>";
String testDocAppSpecific = "<Testing123>strictly for testing - app specific from chrome</Testing123>";
String testDocAppSpecificR = "<Testing123>strictly for testing - app specific record specific from chrome</Testing123>";
String testDoc = "<Testing123>strictly for testing - chrome created no externalID</Testing123>";
//String testDocRplc = "<Testing123>strictly for testing - replaced by Chrome</Testing123>";
String testDocEstablished = "<Testing123>strictly for testing - Have Chrome try to delete later</Testing123>";
String testDocToDelete = "<Testing123>strictly for testing - Chrome should be able to delete this if done soon</Testing123>";
String testDocToReplace = "<Testing123>strictly for testing - Chrome will replace this version</Testing123>";
String testDocReplacement = "<Testing123>strictly for testing - Chrome will use this to replace the other</Testing123>";
String testDocToShare = "<Testing123>share this</Testing123>";
String allergyDoc =
"<Allergy xmlns=\"http://indivo.org/vocab/xml/documents#\">\n" +
" <dateDiagnosed>2009-05-16</dateDiagnosed>\n" +
" <diagnosedBy>Children's Hospital Boston</diagnosedBy>\n" +
" <allergen>\n" +
" <type type=\"http://codes.indivo.org/codes/allergentypes/\" value=\"drugs\">Drugs</type>\n" +
" <name type=\"http://codes.indivo.org/codes/allergens/\" value=\"penicillin\">Penicillin</name>\n" +
" </allergen>\n\n" +
" <reaction>blue rash</reaction>\n" +
" <specifics>this only happens on weekends</specifics>\n" +
"</Allergy>";
String medicationDoc =
"<Medication xmlns=\"http://indivo.org/vocab/xml/documents#\">" +
"<dateStarted>2009-02-05</dateStarted>" +
"<name type=\"http://indivo.org/codes/meds#\" abbrev=\"c2i\" value=\"cox2-inhibitor\">COX2 Inhibitor</name>" +
"<brandName type=\"http://indivo.org/codes/meds#\" abbrev=\"vioxx\" value=\"Vioxx\">Vioxx</brandName>" +
"<dose><value>3</value><unit type=\"http://indivo.org/codes/units#\" value=\"pills\" abbrev=\"p\">pills</unit></dose>" +
"<route type=\"http://indivo.org/codes/routes#\" value=\"PO\">By Mouth</route>" +
"<strength><value>100</value><unit type=\"http://indivo.org/codes/units#\" value=\"mg\" abbrev=\"mg\">milligram</unit></strength>" +
"<frequency type=\"http://indivo.org/codes/frequency#\" value=\"daily\">daily</frequency>" +
"</Medication>";
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws
IndivoClientException, IOException, XPathExpressionException, javax.xml.datatype.DatatypeConfigurationException{
// TODO code application logic here
ChromeTest instance = new ChromeTest();
Properties props = new Properties();
instance.properties = props;
instance.xpath = XPathFactory.newInstance().newXPath();
instance.extrnlRandom = Integer.toString(new Random().nextInt(1000000));
instance.dtf = DatatypeFactory.newInstance();
instance.doTest();
}
private void reportKnownError(Exception ice) {
String errId = Integer.toString(new Random().nextInt(1000000));
System.err.println("\n\nerror id: " + errId);
ice.printStackTrace();
System.err.println("==============================================\n");
System.out.println("Known exception thrown, stack trace in error stream, see: " + errId + "\n");
}
private void doTest() throws IndivoClientException, XPathExpressionException, UnsupportedEncodingException {
Rest chrome = new Rest("chrome", "chrome", "http://localhost:8080", null);
String accountId = "johnsmith@example.org";
String username = "jsmith";
String password = "password.example";
String accountId_second = "johnsmith@example.org";
String username_second = "jsmith";
String password_second = "password.example";
recordId = "781a64e7-fc04-4bbc-8804-7480b0b337dc";
recordId_second = "781a64e7-fc04-4bbc-8804-7480b0b337dc";
String str = "username="+ username+ "&password="+password ;
System.out.println("testing -- oauth_internal_session_createPOST");
Map<String,String> testResultForm =(Map<String,String>) chrome.oauth_internal_session_createPOST(str, options);
System.out.println("oauth_internal_session_createPOST once");
System.out.println(Utils.printForm(testResultForm) + "\n\n");
sessionToken = testResultForm.get("oauth_token");
sessionTokenSecret = testResultForm.get("oauth_token_secret");
String str1 = "username="+ username_second+ "&password="+password_second ;
testResultForm =(Map<String,String>)chrome.oauth_internal_session_createPOST(str1, options);
System.out.println(Utils.printForm(testResultForm) + "\n\n");
sessionToken_second = testResultForm.get("oauth_token");
sessionTokenSecret_second = testResultForm.get("oauth_token_secret");
Document testResultDoc = null;
System.out.println("testing -- records_X_documents_X_versions_GET");
System.out.println("testing -- records_X_documents_GET");
String xmlDateTime = null;
gregCal = dtf.newXMLGregorianCalendar(new GregorianCalendar());
xmlDateTime = gregCal.toXMLFormat();
String hba1cDoc = "<HBA1C xmlns=\"http://indivo.org/vocab#\" value=\"6.3\""
+ " unit=\"mg/dL\" datetime=\"" + xmlDateTime + "\" />";
System.out.println("testing -- records_X_documents_POST");
testResultDoc = (Document) chrome.records_X_documents_POST(
recordId, sessionToken, sessionTokenSecret, hba1cDoc, "application/xml", options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n--------------------------------------\n\n");
System.out.println("testing -- records_X_documents_POST");
testResultDoc = (Document) chrome.records_X_documents_POST(
recordId, sessionToken, sessionTokenSecret,
hba1cDoc.replace("\"6.3\"", "\"7.4\""), "application/xml", options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n--------------------------------------\n\n");
testResultDoc = (Document) chrome.records_X_documents_POST(recordId, sessionToken, sessionTokenSecret,
medicationDoc, "application/xml", options);
System.out.println("testing -- records_X_reports_minimal_X_GET");
testResultDoc = (Document) chrome.records_X_reports_minimal_X_GET(
pagingOrderingQuery, recordId, "medications", sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- accounts_XGET");
testResultDoc = (Document) chrome.accounts_XGET(accountId, sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- accounts_X_infoSetPOST");
testResultDoc = (Document) chrome.accounts_X_infoSetPOST(
"new full_name nathan.finstein@childrens.harvard.edu", accountId, sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- accounts_X_authsystems_password_setUsernamePOST");
testResultDoc = (Document) chrome.accounts_X_authsystems_password_setUsernamePOST(username + "_new", accountId, sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n------------------------------------------------\n\n");
// now set it back right away so we don't break anything
System.out.println("testing -- accounts_X_authsystems_password_setUsernamePOST");
testResultDoc = (Document) chrome.accounts_X_authsystems_password_setUsernamePOST(username, accountId, sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n------------------------------------------------\n\n");
String str2 = "username="+ username+ "&password="+password ;
testResultForm =(Map<String,String>)chrome.oauth_internal_session_createPOST(str2, options);
System.out.println("oauth_internal_session_createPOST twice");
System.out.println(Utils.printForm(testResultForm) + "\n\n");
sessionToken = testResultForm.get("oauth_token");
sessionTokenSecret = testResultForm.get("oauth_token_secret");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- accounts_X_authsystems_password_changePOST");
testResultDoc = (Document) chrome.accounts_X_authsystems_password_changePOST(password,
password + "_new", accountId, sessionToken, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n--------------------------------------------------\n\n");
// now change it right back
System.out.println("testing -- accounts_X_authsystems_password_changePOST");
testResultDoc = (Document) chrome.accounts_X_authsystems_password_changePOST(password + "_new", password, accountId, sessionToken, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
// now set it back to what it was
System.out.println("testing -- accounts_X_authsystems_password_setUsernamePOST");
try {
System.out.println("testing -- records_X_apps_XDELETE");
testResultDoc = (Document) chrome.records_X_apps_XDELETE(
recordId_second, problemApp, sessionToken_second, sessionTokenSecret_second, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
} catch (IndivoClientException ice) {
reportKnownError(ice);
}
if (false) { // skip for now, test with OAuth dance
System.out.println("testing -- oauth_internal_request_tokens_X_claimPOST");
testResultDoc = (Document) chrome.oauth_internal_request_tokens_X_claimPOST("requestToken", sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- oauth_internal_request_tokens_X_infoGET");
testResultDoc = (Document) chrome.oauth_internal_request_tokens_X_infoGET("requestToken", sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- oauth_internal_request_tokens_X_approvePOST");
testResultForm = (Map<String,String>) chrome.oauth_internal_request_tokens_X_approvePOST(recordId, "requestToken",
sessionToken, sessionTokenSecret, options);
System.out.println(Utils.printForm(testResultForm) + "\n\n");
System.out.println("\n==================================================\n\n");
System.out.println("testing -- oauth_internal_surlVerifyGET");
testResultDoc = (Document) chrome.oauth_internal_surlVerifyGET("/widgets/WidgetName?param1=foo¶m2=bar&surl_timestamp=<TIMESTAMP>&surl_token=<TOKEN>&surl_sig=<SIGNATURE>", sessionToken, sessionTokenSecret, options);
System.out.println(Utils.domToString(testResultDoc) + "\n\n");
System.out.println("\n==================================================\n\n");
}
}
private List<String> listAllDocs(String recId, Rest chrome)
throws IndivoClientException, XPathExpressionException {
List<String> retVal = new ArrayList<String>();
Document docsDoc = (Document) chrome.records_X_documents_GET(pagingOrderingQuery, recordId, sessionToken, sessionTokenSecret, options);
NodeList allDocs = (NodeList) xpath.evaluate("/Documents/Document/@id", docsDoc, XPathConstants.NODESET);
System.out.println("allDocs.getLength(): " + allDocs.getLength());
for (int ii = 0; ii < allDocs.getLength(); ii++) {
String idStr = ((Attr)allDocs.item(ii)).getValue();
retVal.add(idStr);
}
return retVal;
}
private void shareAllDocs(String recId, List<String> docsList, String carenetId, Rest chrome)
throws IndivoClientException {
for (int ii = 0; ii < docsList.size(); ii++) {
String idStr = docsList.get(ii);
System.out.println("idStr: " + idStr);
System.out.println("testing -- records_X_documents_X_carenets_XPUT");
Document resltDoc = (Document) chrome.records_X_documents_X_carenets_XPUT(
recordId, idStr, carenetId, sessionToken, sessionTokenSecret, options);
System.out.println("sharing -- record:" + recordId + " doc:" + idStr + " " + Utils.domToString(resltDoc) + "\n\n");
}
System.out.println("\n+===================++++++++++++++++++\n\n");
}
}
}
答案 0 :(得分:3)
首先,您需要一个Android组件来启动您的类 - 它可以是Activity,Service或Application。
其次,您需要使用您的代码启动一个线程,因为网络调用不能在UI线程上执行。
从android开发here开始。
答案 1 :(得分:0)
您应该为您的java代码创建库项目,然后使用到Android应用程序中并阅读http://developer.android.com/以使用Android。