按下按钮更新/创建JSON对象

时间:2016-03-14 14:25:21

标签: java android json

我正在创建一个CMS应用程序,我正在尝试创建一个JSON对象,我可以发布到我的API,但我不知道如何做到这一点,因为我是新的Android。有没有人有想法?

How it looks

我的代码:

String URL = "http://test.soundwave.drieo.nl/api/content/" + uid + "?apikey=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";

    try {
        APIClientJSONObject api = new APIClientJSONObject();
        JSONObject result = null;

        try {
            result = api.execute(URL).get();
        } catch (Exception e) {
            e.printStackTrace();
        }

            try {

                String content = result.optString("FormattedName");
                String content2 = result.optString("Title");
                String content3 = result.optString("Subtitle");
                String content4 = result.optString("Text");

                EditText name = (EditText) findViewById(R.id.etInternNaam);
                name.setText(content);
                EditText titel = (EditText) findViewById(R.id.etName);
                titel.setText(content2);
                EditText ondertitel = (EditText) findViewById(R.id.etOndertitel);
                ondertitel.setText(content3);
                EditText EditText = (EditText) findViewById(R.id.etTekst);
                EditText.setText(Html.fromHtml(content4));

                if("null" == content) {
                    name.setText("");
                }
                if("null" == content2) {
                    titel.setText("");
                }
                if("null" == content3) {
                    ondertitel.setText("");
                }
                if("null" == content4) {
                    EditText.setText("");
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

API代码:

package nl.drieo.soundwave.test.cms;

import android.os.AsyncTask;

import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import cz.msebera.android.httpclient.HttpResponse;
import cz.msebera.android.httpclient.client.HttpClient;
import cz.msebera.android.httpclient.client.methods.HttpGet;
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient;

/**
 * Created by r.devries on 14-3-2016.
*/
public class APIClientJSONObject extends AsyncTask<String, Void, JSONObject>           {

@Override
protected JSONObject doInBackground(String... params) {

    JSONObject result = null;

    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse httpResponse = httpclient.execute(new HttpGet(params[0]));
        InputStream inputStream = httpResponse.getEntity().getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder builder = new StringBuilder();

        String line = null;

        while ((line = reader.readLine()) != null) {
            builder.append(line);
        }
        result = new JSONObject(builder.toString());
    }
    catch (Exception e) {
        e.printStackTrace();
    }

    return result;
}

}

1 个答案:

答案 0 :(得分:0)

您可以像这样创建JSONObject并将数据放入其中:

*** Assembly Binder Log Entry  (3/17/2016 @ 10:30:11 AM) ***

The operation failed.
Bind result: hr = 0x80131040. No description available.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\tfs\Development\dev-feature\src\MyApplication\bin\Debug\MyApplication.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = MyApplication, Version=3.0.5920.15594, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx
 (Fully-specified)
LOG: Appbase = file:///C:/tfs/Development/dev-feature/src/MyApplication/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = MyApplication.exe
Calling assembly : PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\tfs\Development\dev-feature\src\MyApplication\bin\Debug\MyApplication.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: MyApplication, Version=3.0.5920.15594, Culture=neutral, PublicKeyToken=7b0591cb18d2a932
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/tfs/Development/dev-feature/src/MyApplication/bin/Debug/MyApplication.DLL.
LOG: Attempting download of new URL file:///C:/tfs/Development/dev-feature/src/MyApplication/bin/Debug/MyApplication/MyApplication.DLL.
LOG: Attempting download of new URL file:///C:/tfs/Development/dev-feature/src/MyApplication/bin/Debug/bin/MyApplication.DLL.
LOG: Attempting download of new URL file:///C:/tfs/Development/dev-feature/src/MyApplication/bin/Debug/bin/MyApplication/MyApplication.DLL.
LOG: Attempting download of new URL file:///C:/tfs/Development/dev-feature/src/MyApplication/bin/Debug/MyApplication.EXE.
LOG: Assembly download was successful. Attempting setup of file: C:\tfs\Development\dev-feature\src\MyApplication\bin\Debug\MyApplication.exe
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: MyApplication, Version=3.0.5920.15596, Culture=neutral, PublicKeyToken=7b0591cb18d2a932
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: The assembly reference did not match the assembly definition found.
ERR: Run-from-source setup phase failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

将数据放到json后,可以通过这种方式将json传递给'APIClientJSONObject'类:
编辑:将此代码用于按钮的OnClickListener

JSONObject json = new JSONObject();
json.put("user", "example");

你可以像这样在'APIClientJSONObject'类中获取Json:

try {
        result = api.execute(URL,json.toString()).get();
    } catch (Exception e) {
        e.printStackTrace();
    }

或者如果你想将这个json'POST'到webservice,你可以使用:
编辑:将它用于doInBackground方法中的 APIClientJSONObject 类:

JSONObject jsonObject = new JSONObject(params[1])

我希望这些代码对您有用。