1

我正在为我的班级开发一个 android 项目。

JsonObject我必须从两个网址得到响应。

第一个是get_token,当我将有效的用户名和密码解析到 url 时,我将在其中获得令牌号的 json 响应。
第二种get_message方法是我将使用从生成的令牌获取秘密消息的方法get_token。我能够成功获得令牌,但我一直无法获得秘密消息。
如何传递令牌?

这是我的主要活动的代码:

private String urlJsonObj = "http://sfsuswe.com/413/get_token/?username=sahithiv&password=912549149";

private String urlJsonObj1="http://sfsuswe.com/413/get_message/?token=";

private static String TAG = MainActivity.class.getSimpleName();

private Button btnMakeObjectRequest;

ProgressDialog pDialog;

private TextView txtResponse;

private String jsonResponse;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btnMakeObjectRequest = (Button) findViewById(R.id.btnObjRequest);

txtResponse = (TextView) findViewById(R.id.txtResponse);

txtResponse.setMovementMethod(new ScrollingMovementMethod());

pDialog = new ProgressDialog(this);

pDialog.setMessage("Please wait...");

pDialog.setCancelable(false);

btnMakeObjectRequest.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

makeJsonObjectRequest();

}

});

}

/**

* Method to make json object request where json response starts wtih {

* */

private void makeJsonObjectRequest() {

showpDialog();

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,

urlJsonObj, null, new Response.Listener<JSONObject>() {

@Override

public void onResponse(JSONObject response) {

Log.d(TAG, response.toString());

try {

// Parsing json object response

// response will be a json object

String token = response.getString("token");

jsonResponse = "\n\n\n";

jsonResponse += "token:" + token + "\n\n\n\n";

txtResponse.setText(jsonResponse);

} catch (JSONException e) {

e.printStackTrace();

Toast.makeText(getApplicationContext(),

"Error: " + e.getMessage(),

Toast.LENGTH_LONG).show();

}

hidepDialog();

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

VolleyLog.d(TAG, "Error: " + error.getMessage());

Toast.makeText(getApplicationContext(),

error.getMessage(), Toast.LENGTH_SHORT).show();

// hide the progress dialog

hidepDialog();

}

});

AppController.getInstance().addToRequestQueue(jsonObjReq);

}

private void showpDialog() {

if (!pDialog.isShowing())

pDialog.show();

}

private void hidepDialog() {

if (pDialog.isShowing())

pDialog.dismiss();

}

}
4

3 回答 3

1

您需要传递带有Next url的Token 。

String token = response.getString("token");

对于下一个url 响应:

String nextUrl = urlJsonObj1+token;

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,

nextUrl, null, new Response.Listener() {

@Override

public void onResponse(JSONObject response) {

Log.d(TAG+"Final Response", response.toString());

}

AppController.getInstance().addToRequestQueue(jsonObjReq);

输出将是:

{
    "description": "CSC 413.02 Spring 2016 Project 2 Secret Message",
    "message": "On the neighboring shore the fires from the foundry chimneys burning high and glaringly into the night,"
}

希望这会帮助你。

于 2016-02-28T05:38:25.813 回答
0

抱歉,我没有正确阅读问题和代码。可能是错误的答案

我猜您在请求之外将字符串令牌设为空。

当我想在 volllley 请求之外使用响应时,我遇到了同样的问题。

创建一个单独的类

  class store_response{
private static String token;
public static void set_token(String token_separated_from_response)
//to store the token
{
token=token_separated_from_response;
}

//for retrieving token
public static void get_token()
{
return token;
}
}

因此,在存储响应时,只需调用 store_response.set_token(token_extracted_from_response);

并用于在截击请求之外检索。字符串令牌=store_response.get_token();

我是从手机上发布的,很抱歉没有输入代码表单。

于 2016-04-26T08:31:21.190 回答
-1

你可以很简单地解决这个问题......

  1. 为get_token 创建两个方法一为get_message 创建两个方法
  2. 成功获得响应后第一次调用第一个方法,然后通过将令牌作为参数传递来调用第二个方法。我检查了你的 api 响应,我认为这对你来说是最好的解决方案。谢谢
于 2016-04-19T09:58:50.993 回答