1

我正在尝试将用户名和密码发布到网站,而不是收到不正确的用户名/密码消息,而是从网页提供 HTML 代码。这是什么原因?我还尝试使用 chrome 插件“Postman”将用户名和密码发布到网页,它还返回 HTML 代码而不是正确的响应。我是否需要以某种方式告诉服务器它收到的信息是用户名和密码?我该怎么做?谢谢!以下是所有代码:

    public class MainActivity extends Activity implements OnClickListener {

TextView tvIsConnected;
EditText etUserID,etpassword;
Button btnPost;

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

    // get reference to the views
    tvIsConnected = (TextView) findViewById(R.id.tvIsConnected);
    etUserID = (EditText) findViewById(R.id.etName);
    etpassword = (EditText) findViewById(R.id.etPass);

    btnPost = (Button) findViewById(R.id.btnPost);

    // check if you are connected or not
    if(isConnected()){
        tvIsConnected.setBackgroundColor(0xFF00CC00);
        tvIsConnected.setText("You are conncted");
    }
    else{
        tvIsConnected.setText("You are NOT conncted");
    }

    // add click listener to Button "POST"
    btnPost.setOnClickListener(this);


}

public static String POST(String url, Person person){
    InputStream inputStream = null;
    String result = "";
    try {

        // 1. create HttpClient
        HttpClient httpclient = new DefaultHttpClient();

        // 2. make POST request to the given URL
        HttpPost httpPost = new HttpPost(url);

        String json = "";


        // 3. build jsonObject
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("user ID", person.getUserID());
        jsonObject.put("password", person.getPassword());

        // 4. convert JSONObject to JSON to String
        json = jsonObject.toString();


        // ** Alternative way to convert Person object to JSON string usin Jackson Lib 
        // ObjectMapper mapper = new ObjectMapper();
        // json = mapper.writeValueAsString(person); 

        // 5. set json to StringEntity
        StringEntity se = new StringEntity(json);

        // 6. set httpPost Entity
        httpPost.setEntity(se);

        // 7. Set some headers to inform server about the type of the content   
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-type", "application/json");

        // 8. Execute POST request to the given URL
        HttpResponse httpResponse = httpclient.execute(httpPost);

        // 9. receive response as inputStream
        inputStream = httpResponse.getEntity().getContent();


        // 10. convert inputstream to string
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);
        else
            result = "Did not work!";

    } catch (Exception e) {
        Log.d("InputsStream", e.getLocalizedMessage());
    }

    // 11. return result
    System.out.println(result);
    return result;
}

 @Override
    public void onClick(View view) {

        switch(view.getId()){
            case R.id.btnPost:
                if(!validate())
                    Toast.makeText(getBaseContext(), "Enter some data!", Toast.LENGTH_LONG).show();
                // call AsynTask to perform network operation on separate thread
                new HttpAsyncTask().execute("http://(mywebsite).com/loginok.asp");
            break;
        }

    }

public boolean isConnected(){
    ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()) 
            return true;
        else
            return false;   
}

private class HttpAsyncTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {

        person = new Person();
        person.setUserID(etUserID.getText().toString());
        person.setPassword(etpassword.getText().toString());


        return POST(urls[0],person);
    }
    // onPostExecute displays the results of the AsyncTask.
    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(getBaseContext(), "Data Sent!", Toast.LENGTH_LONG).show();
   }
}


private boolean validate(){
    if(etUserID.getText().toString().trim().equals(""))
        return false;
    else if(etpassword.getText().toString().trim().equals(""))
        return false;

    else
        return true;    
}
private static String convertInputStreamToString(InputStream inputStream) throws IOException{
    BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
    String line = "";
    String result = "";
    while((line = bufferedReader.readLine()) != null)
        result += line;

    inputStream.close();

    return result;

}

}

4

0 回答 0