java - Android 向服务器发送 JSON 身份验证并检索数据

标签 java android json authentication

您好,我想在 URL 上进行身份验证并从那里获取数据。我发现了一些东西,但出现以下错误。可能是什么问题?

public class MainActivity extends Activity {

    private static final String URL = "https://mobilogr.uludag.edu.tr/BYService/LoginService.asmx/LoginUser";   

    @Override
    public void onCreate(Bundle savedInstanceState) {

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

       public void sendJson(View v) {

                    HttpClient client = new DefaultHttpClient();
                    HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
                    HttpResponse response;
                    JSONObject json = new JSONObject();

                    try {
                        HttpPost post = new HttpPost(URL);
                        json.put("kullaniciAdi", "asdsads");
                        json.put("sifre", "asdasdsa");
                        StringEntity se = new StringEntity( json.toString());  
                        se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                        post.setEntity(se);
                        response = client.execute(post);

                        /*Checking response */
                        if(response!=null){
                            InputStream in = response.getEntity().getContent(); //Get the data in the entity
                        }

                    } catch(Exception e) {
                        e.printStackTrace();                        
                    }                   


        }
}

我收到以下错误:

09-05 14:37:30.632: W/System.err(1256): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
09-05 14:37:30.641: W/System.err(1256):     at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
09-05 14:37:30.641: W/System.err(1256):     at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
09-05 14:37:30.650: W/System.err(1256):     at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
09-05 14:37:30.661: W/System.err(1256):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
09-05 14:37:30.661: W/System.err(1256):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-05 14:37:30.671: W/System.err(1256):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-05 14:37:30.671: W/System.err(1256):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
09-05 14:37:30.671: W/System.err(1256):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-05 14:37:30.681: W/System.err(1256):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-05 14:37:30.691: W/System.err(1256):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-05 14:37:30.691: W/System.err(1256):     at com.example.testjson.MainActivity.sendJson(MainActivity.java:52)
09-05 14:37:30.691: W/System.err(1256):     at java.lang.reflect.Method.invokeNative(Native Method)
09-05 14:37:30.691: W/System.err(1256):     at java.lang.reflect.Method.invoke(Method.java:511)
09-05 14:37:30.691: W/System.err(1256):     at android.view.View$1.onClick(View.java:3586)
09-05 14:37:30.701: W/System.err(1256):     at android.view.View.performClick(View.java:4084)
09-05 14:37:30.701: W/System.err(1256):     at android.view.View$PerformClick.run(View.java:16966)
09-05 14:37:30.711: W/System.err(1256):     at android.os.Handler.handleCallback(Handler.java:615)
09-05 14:37:30.711: W/System.err(1256):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-05 14:37:30.720: W/System.err(1256):     at android.os.Looper.loop(Looper.java:137)
09-05 14:37:30.720: W/System.err(1256):     at android.app.ActivityThread.main(ActivityThread.java:4745)
09-05 14:37:30.731: W/System.err(1256):     at java.lang.reflect.Method.invokeNative(Native Method)
09-05 14:37:30.731: W/System.err(1256):     at java.lang.reflect.Method.invoke(Method.java:511)
09-05 14:37:30.731: W/System.err(1256):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-05 14:37:30.741: W/System.err(1256):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-05 14:37:30.741: W/System.err(1256):     at dalvik.system.NativeStart.main(Native Method)

如果有人知道该怎么做,请帮助我,谢谢大家。

最佳答案

调用方式:

 private void loginValidate()
 {
    String username, password;
    username = _username.getText().toString();
    password = _password.getText().toString();

    if (username.equalsIgnoreCase("") && password.equalsIgnoreCase(""))
    {
        myToast("Please enter the uername and Password!!");
        return;
    }
    if (isNetworkConnected())
    {
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair(Central.USERNAME, username));
        params.add(new BasicNameValuePair(Central.PASSWORD, password));
        new LOGINREQUESTOR(Central.WS_LOGIN, params).execute();
    } else
        myToast("No Internet Connection!!!");

 }   


class LOGINREQUESTOR extends AsyncTask<String, Integer, String>
{

    String URL;
    List<NameValuePair> parameters;

    private ProgressDialog pDialog;

    public LOGINREQUESTOR(String url, List<NameValuePair> params)
    {
        this.URL = url;
        this.parameters = params;
    }

    @Override
    protected void onPreExecute()
    {
        pDialog = new ProgressDialog(LoginActivity.this);
        pDialog.setMessage("Processing Request...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params)
    {
        try
        {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;

            HttpPost httpPost = new HttpPost(URL);

            if (parameters != null)
            {
                httpPost.setEntity(new UrlEncodedFormEntity(parameters));
            }
            httpResponse = httpClient.execute(httpPost);

            httpEntity = httpResponse.getEntity();
            return EntityUtils.toString(httpEntity);

        } catch (Exception e)
        {

        }
        return "";
    }

    @Override
    protected void onPostExecute(String result)
    {
        pDialog.dismiss();

        try
        {
            SQLDataHelper help = new SQLDataHelper(getApplicationContext());
            JSONHelper helper = new JSONHelper();
            Accounts loggedaccount = helper.getLoggedUser(result);

            String res = loggedaccount.getLogin_responce();

            if (res.equalsIgnoreCase("success"))
            {

            } else
            {

                myToast("Login Failed..");

            }

        } catch (Exception e)
        {

        }
        super.onPostExecute(result);
    }

}

关于java - Android 向服务器发送 JSON 身份验证并检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688532/

相关文章:

java - 如何使状态 View 突出显示和超链接

java - 具有来自 List<List<String>> 的频率计数的唯一值

java - 应用关闭后未收到推送

android - 在自定义动态 ListView 上自动滚动到底部

使用java读取json文件时出现java.lang.ClassCastException

python - 删除 json 输出中具有空值的列

javascript - 当我尝试将 JSON 编码数组发送到 jquery 时,发生 500 内部服务器错误

java - 将 Java 连接到 SQL 数据库

java - 如何在 json 中仅显示 oneToMany 中实体的一个属性?

android - 无法使用 Gradle 分发 'http://services.gradle.org/distributions/gradle-1.6-bin.zip' 执行构建