2017-12-06 12 views
0

私はアンドロイドに新しく、Webサービスと通信するためにボレーを使用しています。 Postman detailsAndroidのボレー - 生のテキストを送信してjsonの応答を受け取る方法

私は、= grant_type =パスワード&ユーザ名= myusernameと指定&パスワードを使用してみてくださいのみpostman.I上で動作するWebサービスへの生のテキストを送信した私のmainActivityから2 EDITTEXTからmyusernameと指定し、mypasswordというの取得mypassowrd。 これを達成するためのよりよい方法はありますか?

public class MainActivity extends AppCompatActivity { 

Button btnLogin,btnFetch,btnExit; 
EditText editTxtUsr,editTxtPass; 
TextView txtView; 
String uRL ="****"; 


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

    btnLogin=findViewById(R.id.buttonLogin); 
    btnFetch=findViewById(R.id.buttonFetch); 
    btnExit=findViewById(R.id.buttonExit); 
    editTxtUsr=findViewById(R.id.editTextUsrname); 
    editTxtPass=findViewById(R.id.editTextPassword); 
    txtView=findViewById(R.id.textViewData); 


    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String wsURL = uRL + "/authtoken"; 
      //final String appData = "grant_type=password&username=" + editTxtUsr + "&password=" + editTxtPass; 

      StringRequest request = new StringRequest(Request.Method.POST, wsURL, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        if (response.equals("true")) { 
         Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_SHORT).show(); 
        } else { 
         Toast.makeText(MainActivity.this, "Incorrect ", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError volleyError) { 
        Toast.makeText(MainActivity.this, "Some error occured" + volleyError, Toast.LENGTH_SHORT).show(); 
       } 
      }) { 
       @Override 
       public Map<String,String> getHeaders() throws AuthFailureError { 
        Map<String, String> headers = new HashMap<>(); 
        headers.put("Content-Type", "application/text"); 
        headers.put("charset", "TYPE_UTF8_CHARSET"); 
        return headers; 

       } 

       @Override 
       protected Map<String,String> getParams() throws AuthFailureError { 
        Map<String, String> parameters = new HashMap<>(); 
        parameters.put("grand_type", "SET_VALUE"); 
        parameters.put("Username", editTxtUsr.getText().toString()); 
        parameters.put("Password", editTxtPass.getText().toString()); 
        return parameters; 

       } 
      }; 

      RequestQueue rQueue= Volley.newRequestQueue(MainActivity.this); 
      rQueue.add(request); 
     } 
    }); 

    btnExit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      finish(); 
     } 
    }); 
} 
} 

私はこれを達成するためにさまざまな方法を試しましたが、運がありません。これは、私がWebサービスに接続しようとするコードのサンプルです。

私は[253] BasicNetwork.performRequest取得:...

のための予期しない応答コード400を、私はStackOverflowのを通じて徹底的に検索さが、私は私の質問に対する正しい答えを見つけるように見えることはできません。 ご協力いただければ幸いです。

答えて

0

私はこれに取り組んできましたが、質問を投稿した後、いくつかの試行の後に解決策を見つけました。 答えは私が思ったより簡単です。 あなたがする必要があるのは、objectrequestを作成し、投稿したいテキストで本文を上書きすることです。ヘッダーやパラメーターを変更する必要はありません。 まだStringrequestを使用して回答が見つかりません。

ここでrequestBodyは、文字列として送信する生のテキストです。

関連する問題