2015-09-05 51 views
-1

我是新手在这里。我想将我的android应用程序连接到wampserver数据库。我在这个link上找到了一个教程,但是我应该在哪里找到我的serverUrl在wampserver?它应该看起来像这样:private final String serverUrl = "your path here"那么我在哪里可以找到"your path here"Android to Wamp使用Android Studio和PHP连接的服务器

这里是我的代码:

MainActivity.java

package inducesmile.com.androidloginandregistration; 

import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.params.BasicHttpParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 


public class MainActivity extends ActionBarActivity { 

    protected EditText username; 
    private EditText password; 
    protected String enteredUsername; 
    private final String serverUrl = "your path here"; 

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

     username = (EditText)findViewById(R.id.username_field); 
     password = (EditText)findViewById(R.id.password_field); 
     Button loginButton = (Button)findViewById(R.id.login); 
     Button registerButton = (Button)findViewById(R.id.register_button); 

     loginButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       enteredUsername = username.getText().toString(); 
       String enteredPassword = password.getText().toString(); 

       if(enteredUsername.equals("") || enteredPassword.equals("")){ 
        Toast.makeText(MainActivity.this, "Username or password must be filled", Toast.LENGTH_LONG).show(); 
        return; 
       } 
       if(enteredUsername.length() <= 1 || enteredPassword.length() <= 1){ 
        Toast.makeText(MainActivity.this, "Username or password length must be greater than one", Toast.LENGTH_LONG).show(); 
        return; 

       // request authentication with remote server4 
       AsyncDataClass asyncRequestObject = new AsyncDataClass(); 
       asyncRequestObject.execute(serverUrl, enteredUsername,  enteredPassword); 

      } 
     }); 

     registerButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this,   RegisterActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
     return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
    private class AsyncDataClass extends AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... params) { 

      HttpParams httpParameters = new BasicHttpParams(); 
      HttpConnectionParams.setConnectionTimeout(httpParameters, 5000); 
      HttpConnectionParams.setSoTimeout(httpParameters, 5000); 

      HttpClient httpClient = new DefaultHttpClient(httpParameters); 
      HttpPost httpPost = new HttpPost(params[0]); 

      String jsonResult = ""; 
      try { 
       List<NameValuePair> nameValuePairs = new  ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("username", params[1])); 
       nameValuePairs.add(new BasicNameValuePair("password", params[2])); 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

       HttpResponse response = httpClient.execute(httpPost); 
       jsonResult = inputStreamToString(response.getEntity().getContent()).toString(); 

      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return jsonResult; 
     } 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 
     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 
      System.out.println("Resulted Value: " + result); 
     if(result.equals("") || result == null){ 
      Toast.makeText(MainActivity.this, "Server connection failed", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     int jsonResult = returnParsedJsonObject(result); 
     if(jsonResult == 0){ 
      Toast.makeText(MainActivity.this, "Invalid username or password", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     if(jsonResult == 1){ 
      Intent intent = new Intent(MainActivity.this, LoginActivity.class); 
      intent.putExtra("USERNAME", enteredUsername); 
      intent.putExtra("MESSAGE", "You have been successfully login"); 
      startActivity(intent); 
     } 
    } 
    private StringBuilder inputStreamToString(InputStream is) { 
     String rLine = ""; 
     StringBuilder answer = new StringBuilder(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     try { 
      while ((rLine = br.readLine()) != null) { 
       answer.append(rLine); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return answer; 
    } 
} 
private int returnParsedJsonObject(String result){ 

    JSONObject resultObject = null; 
    int returnedResult = 0; 
    try { 
     resultObject = new JSONObject(result); 
     returnedResult = resultObject.getInt("success"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return returnedResult; 
} 
} 

我使用WampServer与user="root"password=""

+0

你的问题在它现在的形式没有多大意义。如果你有一个具体的问题,但你在博客文章或网站上阅读的内容,你可能会想要在那里发表评论。 – e4c5

+0

但我也有评论那里先生,没有回应..同样的问题引起其他用户那里...我只想知道serverUrl从哪里来...我不知道路径..请帮助我先生。 – Christina

+0

如果你仔细看,你会发现在你发布的代码中没有任何对serverUrl的引用。 – e4c5

回答

1

“路径” 可能是URL到您的本地Web服务器,即:

http://your_ip/your_path_to_your_php_script

+0

是index.php先生? – Christina

+0

先生,我得到这个错误:org.apache.http.conn.HttpHostConnectException:连接到http:// localhost拒绝 – Christina

+0

如果你在网络上。运行ipconfig获取你的IP地址。 在你的android应用程序中使用该ip从你的模拟器访问你的网络服务器。 您还需要在Web服务器中使用PHP登录脚本来处理身份验证。 – peter

1

感谢@ e4c5(对于建议)和@激光作为答案。

我解决了!

因此,对于其他谁会偶然发现这个问题,检查了这一点!^_^

转到CMD >>键入ipconfig >>再看看IPv4地址 ...

然后将其粘贴在private final String serverUrl = "your path here"

http://192.168.1.8/android_user_api/index.php

谢谢更换your path here你们!

快乐编码!

0

您需要找到您的计算机的IPV4地址,在您的计算机上运行命令提示符(转到Windows启动按钮并启动typig cmd)并键入ipconfig并输入以查看您计算机的IPV4地址。

成功在您的计算机上运行WAMP服务器指示系统托盘上的绿色图标,点击该图标,弹出菜单点击放在线上项目。等待几秒钟来处理它的任务。

要在您的android studio模拟器中测试您的PHP MySQL应用程序,只需输入地址http:\\IP Address\,然后在您的代码中输入PHP文件的路径。

例如:http:\\192.168.1.7\test\example.php