使用单个字符串将 JSON 发布到服务器
Posted
技术标签:
【中文标题】使用单个字符串将 JSON 发布到服务器【英文标题】:Posting JSON to server using single string 【发布时间】:2019-10-07 17:48:52 【问题描述】:我将数据作为单个字符串发布到服务器。它没有发布。我得到回应。
我尝试过截击和改造。但我想尝试正常的 HTTP 连接。我不想用别的东西
String api_url = "http://mywebsite.com/blah_blah";
String book_now_request = "user_id=" + URLEncoder.encode(user_id, "UTF-8") + "&src=" + URLEncoder.encode(String.valueOf(src), "UTF-8") + "&src_lng=" + URLEncoder.encode(String.valueOf(src_lng) , "UTF-8" );
JSONObject response_data = call_api(api_url, book_now_request);
public JSONObject call_api(String api_url, String request_data)
try
URL url = new URL(api_url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
Log.e("request_data", request_data);
writer.write(request_data);
writer.flush();
writer.close();
os.close();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
String response = "";
while ((line = bufferedReader.readLine()) != null)
response += line;
Log.d("API response", response);
JSONObject response_data = new JSONObject(response);
Log.e("J Response",response_data.toString());
return response_data;
catch (Exception e)
// Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
Log.e("Exception", e.toString());
return null;
【问题讨论】:
您面临的具体问题是什么 我收到错误的回复,这意味着它没有正确发布 这种格式正确吗? 如果您使用 POST 方法从正文中获取数据,请尝试使用来自服务器端的原始数据获取数据。你得到什么回应 我必须将此数据发布到服务器。如果此数据正确.. 服务器将返回成功。否则它将返回未发布的数据。我收到未发布的数据。我怀疑这个字符串将转换为 json 对象并发布,或者它将作为原始数据发布 【参考方案1】:我能理解你的问题。您将其作为原始数据传递。您需要将其格式化为 JSON 数据。
String book_now_request = "\"user_id\":\"key\",\"key\":\"value\",\"key\":\"value\""
试试这个。希望这会奏效。祝你有美好的一天!
【讨论】:
我像 url 一样发布它。现在它可以工作了。再次感谢以上是关于使用单个字符串将 JSON 发布到服务器的主要内容,如果未能解决你的问题,请参考以下文章