如何从Android应用程序发送数据到HTML并收回信息?

时间:2014-07-11 18:40:11

标签: android webview http-post http-get

我需要发送三条信息: 域名,电子邮件和移动标识符。

从网站上,我希望得到一个类似的JSON响应:

{
domain: example.com,
token: abcdefg123,
reportEmail: null,
mobileResultsPageUrl: http://completedtest.testingSite.com/mobile/abcdefg123/4a0ced51c00cfd5d6ce8b50d00be49f6
}

我最关心的是将在新活动中显示为Webview的网址。

这是我到目前为止所做的尝试:

public void postData(){
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://exampleTestingSite.com/");

    try {
        // Add your data
        List<NameValuePair> pairs = new ArrayList<NameValuePair>(3);
        pairs.add(new BasicNameValuePair("domain", "OswaldMagic.com"));
        pairs.add(new BasicNameValuePair("sendReportTo", "me@gmail.com"));
        pairs.add(new BasicNameValuePair("mobile", "1"));
        httppost.setEntity(new UrlEncodedFormEntity(pairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}

非常感谢任何帮助。保持警惕,尽快谈谈, -Stefan

1 个答案:

答案 0 :(得分:1)

现在正在运作!

我们必须让网站知道我们希望返回一个JSON,因为默认设置为HTML。我们通过修改标头以接受JSON来执行此操作,请参阅代码:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setHeader("Accept", "application/json");

获得预期结果后,我只需要使用JSON的一部分。首先,我从网站获取结果并将其转换为字符串:

resultHTML = Html.fromHtml(responseBody);

JSONObject obj = null;
try {
    obj = new JSONObject(String.valueOf(resultHTML));
} catch (JSONException e) {
    e.printStackTrace();
}
String resultsPageHTML = null;
try {
    resultsPageHTML = obj.getString("mobileResultsPageUrl");
} catch (JSONException e) {
    e.printStackTrace();
}

然后我调用了sharedPreferences:

// create a file to save SharedPreferences in
public static final String PREFS_NAME = "MyPreferencesFile";
// call sharedPreferences
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
// call SharedPreferences editor
SharedPreferences.Editor editor = prefs.edit();
editor.putString("resultsPageHTML", resultsPageHTML);
editor.commit();

这样我就可以在另一项活动中收到它。

我希望这可以帮助那些正在经历类似斗争的人。