如何在 Android Java 中发布 json 数据?

     2023-04-18     131

关键词:

【中文标题】如何在 Android Java 中发布 json 数据?【英文标题】:How to post json data in Android Java? 【发布时间】:2021-09-17 15:39:38 【问题描述】:

我是 Android Java 新手

我想将我的 Web 项目转换为 Android Java 应用程序并将本机项目反应。

对于网站,我使用 Jquery 和 ajax

$.ajax(
     url: "https://site/data.json",
     data: JSON.stringify(
        Name:  "Peter",
        Gender: "M"
             ),
        type: "POST",
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        success: function(returnData)
          
           ,
          error: function(xhr, ajaxOptions, thrownError)
             
            
         )

对于 React Native,我使用 fetch

//Work with React Native
    fetch('https://site/data.json', 
      
       method: 'POST',
       headers: 
       'Accept':       'application/json',
       'Content-Type': 'application/json',
       ,
       body: JSON.stringify( 
         Name:  "Peter",
         Gender: "M"
         )
       

但我不知道将其转换为 Android Java。有什么想法吗??

非常感谢

我尝试了以下代码,但对我不起作用。

public void sendPost() 
        Thread thread = new Thread(new Runnable() 
            @Override
            public void run() 
                try 
                    URL url = new URL("https://site/data.json");
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("POST");
                    conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
                    conn.setRequestProperty("Accept","application/json");
                    conn.setDoOutput(true);
                    conn.setDoInput(true);

                    JSONObject jsonParam = new JSONObject();
                    jsonParam.put("Name:", "Peter");
                    jsonParam.put("Gender:", "M");
                    Log.i("JSON", jsonParam.toString());
                    DataOutputStream os = new DataOutputStream(conn.getOutputStream());
                    os.writeBytes(jsonParam.toString());
                    os.flush();
                    os.close();

                    Log.i("STATUS", String.valueOf(conn.getResponseCode()));
                    Log.i("MSG" , conn.getResponseMessage());

                    conn.disconnect();
                 catch (Exception e) 
                    e.printStackTrace();
                
            
        );

   

【问题讨论】:

【参考方案1】:

使用 android 的网络库,你所做的是遗留的,不被鼓励。看看这个,两个都不错RetroFitVolley

【讨论】:

【参考方案2】:

您可以使用 volley 或 retrofit 库,下面是一个通过 retrofit 发送请求的简单示例。 1-将依赖项添加到您的 build.gradle:

   implementation 'com.google.code.gson:gson:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'
implementation 'com.squareup.okhttp3:okhttps:3.4.1'

2- 为发送数据制作模型:

public class Model 

@SerializedName("Name")
@Expose
private String name;

@SerializedName("Gender")
@Expose
private String gender;

public Model(String name, String gender) 
    this.name = name;
    this.gender = gender;
  


3- 创建建立连接的类

public class ApiClient 

private static Retrofit retrofit = null;
static Retrofit getClient() 

    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
    retrofit = new Retrofit.Builder()
            .baseUrl("https://site/")   // your base url 
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build();
    return retrofit;
      
  

4- 添加接口用于处理对服务器的任何请求(获取或发布)

@POST("data")  // your url
@Headers("Content-Type: application/json")
Call<String>  PostData(@Body Model model);
/// Call<String>   depend for result response

5-将此添加到您的活动/片段中

   @Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main1111);

    sendPost();


private void sendPost() 

    ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);
    Call<String> call = apiInterface.PostData(simpleData());

    call.enqueue(new Callback<String>() 
        @Override
        public void onResponse(Call<String> call, Response<String> response) 
            if (response.isSuccessful()) 
                String result = response.body();   // this response depend for result in server (get  any response you must edit result type in call )
                Log.e("TAG", "onResponse: " + result);
                //response from server
            
        

        @Override
        public void onFailure(Call<String> call, Throwable t) 
            /// error response like disconnect to  server. failed to connect or etc....
        
    );



private Model simpleData() 
    Model model = new Model("Saman", "Male");
    return model;
    

这是从任何服务器请求和响应的最简单方法。

【讨论】:

如何在android java中制作这个json对象[关闭]

】如何在androidjava中制作这个json对象[关闭]【英文标题】:howtomakethisjsonobjectinandroidjava[closed]【发布时间】:2021-02-0911:41:17【问题描述】:这是我的代码:"body":"\\"data\\":[[1633209578,0,117.000000],[1633209578,1,116.000000],[1633209624,2,121.000000],... 查看详情

如何在 Android JAVA 的列表视图中显示部分但不是全部 JSON 数据

】如何在AndroidJAVA的列表视图中显示部分但不是全部JSON数据【英文标题】:HowdoIdisplaysomebutnotallJSONdatainalistviewinAndroidJAVA【发布时间】:2021-08-0301:05:29【问题描述】:我正在尝试将我使用URL检索到的JSON文件中的一些但不是全部信... 查看详情

如何在Android中解析json字符串? [复制]

】如何在Android中解析json字符串?[复制]【英文标题】:HowtoparsejsonstringinAndroid?[duplicate]【发布时间】:2011-12-2619:46:08【问题描述】:可能重复:JSONArrayiterationinAndroid/Java我正在从服务器获取JSON字符串,并且我已经通过代码获取了... 查看详情

java - 如何使用json中提供的多个联系人数据在java中的android中添加新的电话联系人

】java-如何使用json中提供的多个联系人数据在java中的android中添加新的电话联系人【英文标题】:howtoaddanewphonecontactinandroidiinjavawithmultiplecontactdataprovidedinjson【发布时间】:2021-06-1414:54:24【问题描述】:当前我正在尝试制作一个... 查看详情

如何在java中将json添加到http帖子的正文中

...02:00:49【问题描述】:我正在尝试在java中为我正在开发的Android应用程序发布一些JSON数据。下面是有效的还是我需要以不同的方式推送JSON字符串?HttpPosthttpost=newHttpPost("http://test.localho 查看详情

如何在 Java Android App 中使用从 Webserver 检索到的 JSON 来动态创建和使用对象

】如何在JavaAndroidApp中使用从Webserver检索到的JSON来动态创建和使用对象【英文标题】:HowtouseJSONretrievedfromWebserverinJavaAndroidApptocreateanduseObjectsdynamically【发布时间】:2020-12-2613:33:39【问题描述】:我正在第一次构建一个带有Web服... 查看详情

如何根据Android Studio中JSON对象中的另一个值从JSON文件中获取特定值 - Java

】如何根据AndroidStudio中JSON对象中的另一个值从JSON文件中获取特定值-Java【英文标题】:HowtogetaspecificvaluefromaJSONfilebasedonanothervalueintheJSONobjectinAndroidStudio-Java【发布时间】:2021-07-1901:32:55【问题描述】:我正在尝试使用JSON在Android... 查看详情

如何将 JSON 数据(来自 3rd 方 API url)直接存储在我的 firebase 实时数据库中(JAVA/ANDROID)

...自3rd方APIurl)直接存储在我的firebase实时数据库中(JAVA/ANDROID)【英文标题】:howcanIstoreJSONdata(from3rdpartyAPIurl)inmyfirebaserealtimeDBdirectly(JAVA/ANDROID)【发布时间】:2019-06-1011:35:13【问题描述】:我的android应用程序正在使用外部金融API... 查看详情

如何在 Android 中解析 JSON 对象

】如何在Android中解析JSON对象【英文标题】:HowtoParseaJSONObjectInAndroid【发布时间】:2011-07-3019:33:40【问题描述】:我在从JSON对象中提取值时遇到一些问题。这是我的代码tryJSONObjectjson=newJSONObject(result);JSONObjectjson2=json.getJSONObject("re... 查看详情

如何使用 REST 将 Json 字符串发送到 android 参数中的 java webservice?

】如何使用REST将Json字符串发送到android参数中的javawebservice?【英文标题】:HowtosendJsonStringusingRESTtojavawebserviceinParameterinandroid?【发布时间】:2014-05-2102:38:00【问题描述】:恶魔,我将带有三个参数的JSON字符串发送到javaweb服务方... 查看详情

如何在 Android 中保存自定义 Java 对象?

】如何在Android中保存自定义Java对象?【英文标题】:HowtosaveacustomJavaObjectinAndroid?【发布时间】:2015-04-1508:39:24【问题描述】:你能帮帮我吗?我正在尝试将我的Java对象(客户)保存在android中,目前我正在学习一本书。这就是... 查看详情

如何在android中解析json

】如何在android中解析json【英文标题】:Howtoparsejsoninandroid【发布时间】:2021-09-0600:35:24【问题描述】:https://api.mojilala.com/v1/stickers/trending?api_key=dc6zaTOxFJmzCdataclassRootApi(valdata:List<AllData>)dataclassAllData(valimages:I 查看详情

如何在 Android 中解析 JSON 数组(不是 Json 对象)

】如何在Android中解析JSON数组(不是Json对象)【英文标题】:HowtoparseJSONArray(NotJsonObject)inAndroid【发布时间】:2013-09-2909:44:02【问题描述】:我很难找到解析JSONArray的方法。它看起来像这样:["name":"name1","url":"url1","name":"name2","url":... 查看详情

如何在android中使用GSON解析json解析

】如何在android中使用GSON解析json解析【英文标题】:HowtoparsejsonparsingUsingGSONinandroid【发布时间】:2014-05-1007:52:55【问题描述】:我正在使用GSON来解析Json数据。我的Json数据如下:"count":"12","colbreak":1,"name":"unaryrels","score":"9090","Words... 查看详情

如何在 Android Studio 中提取 Json 数据

】如何在AndroidStudio中提取Json数据【英文标题】:howtoextractJsondatainAndroidStudio【发布时间】:2021-08-1508:35:54【问题描述】:如何在我不知道这种情况下的参数的情况下提取Json数据[id:"binance",name:"Binance",year_established:2017,country:"CaymanI... 查看详情

在 android [JAVA] 中的多个 Arraylist 中添加 JSON 数组

】在android[JAVA]中的多个Arraylist中添加JSON数组【英文标题】:AddJSONarraysinmultipleArraylistsinanddroid[JAVA]【发布时间】:2021-09-1422:19:21【问题描述】:我想在多个数组列表中添加特定的JSON数组..在下面的JSON结构中,我只想在多个数组... 查看详情

如何在 Android 的改造请求中传递 JSON 对象并检索 JSON 对象?

】如何在Android的改造请求中传递JSON对象并检索JSON对象?【英文标题】:HowtopassJSONobjectandretrieveJSONobjectinretrofitrequestinAndroid?【发布时间】:2015-12-1317:23:22【问题描述】:我需要使用Retrofit在Post请求中传递Json。我的Json看起来像这... 查看详情

如何在 android java 中使用 volley 获取内部信息对象

】如何在androidjava中使用volley获取内部信息对象【英文标题】:HowcanIgetinsideinfoobjectusingvolleyinandroidjava【发布时间】:2021-07-2708:25:38【问题描述】:这是json数据,我想在androidjava中使用volley显示信息对象希望你能回答这个问题谢... 查看详情