Ich habe eine Android App, die Beiträge zu "http://jont.byethost3.com/gcmtest/gcm.php?shareRegId=true". Nach dem Zugriff sendet die App einen ID-Schlüssel an das Skript und die PHP-Datei speichert es in einer Textdatei auf meinem Dateiserver. Ich habe die URL manuell in meinen Browser eingegeben und es wurde erfolgreich eine leere Textdatei generiert, weil ich keine POST-Daten erhalten habe. Wenn ich sie jedoch in meiner App teste, funktioniert sie nicht.Android App derzeit keine Details, um es zu url
ich AsyncHTTP verwenden rufen und die Daten wie diese
private void backgroundRegister(final String username){
new AsyncTask<Void, Void, String>(){
@Override
protected String doInBackground(Void... params) {
String msg = "";
try{
if(gcmObj==null){
gcmObj = GoogleCloudMessaging.getInstance(getApplicationContext());
}
registerID = gcmObj.register(AppConstants.PROJ_ID);
msg = "Registration ID : " + registerID;
Log.d("REGOID",registerID);
}catch(IOException e){
Log.d("IOEXCEPTION",e.toString());
}
return msg;
}
@Override
protected void onPostExecute(String s) {
if(!TextUtils.isEmpty(registerID)){
savetoSharedPrefs(getApplicationContext(),registerID,username);
Toast.makeText(getApplicationContext(),"Registered with GCM",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"Registration failed",Toast.LENGTH_LONG).show();
}
}
}.execute(null, null, null);
}
private void savetoSharedPrefs(Context context, String registerID,String userName){
SharedPreferences prefs = getSharedPreferences("userDetails", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(regID, registerID);
editor.putString(userNAME, userName);
editor.commit();
storeREG();
}
//store in the file server (PHP)
private void storeREG(){
pg.show();
params.put("regID", registerID);
//Make RESTful webservice call
AsyncHttpClient client = new AsyncHttpClient();
client.post(AppConstants.SERVER_URL,params,new AsyncHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
pg.hide();
if(pg!=null){
pg.dismiss();
}
Toast.makeText(getApplicationContext(),"ID sharing successful",Toast.LENGTH_LONG).show();
Intent home = new Intent(getApplicationContext(),HomeActivity.class);
home.putExtra("regID",registerID);
Log.d("REGID",registerID);
startActivity(home);
finish();
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
pg.hide();
if(pg!=null){
pg.dismiss();
}
if(statusCode==404){
Toast.makeText(getApplicationContext(),"Requested resource not found",Toast.LENGTH_LONG).show();
}else if(statusCode==500){
Toast.makeText(getApplicationContext(),"Something went wrong at the server",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"Unexpected error occurred",Toast.LENGTH_LONG).show();
}
}
});
}
Die Daten, die ich nur Klartext übergeben wollen passieren. Ich hoffe jemand kann mir dabei helfen.
EDIT
Mein PHP-Skript
if(!empty($_GET["shareRegId"])) {
$gcmRegID = $_POST["regID"];
//echo $gcmRegID;
file_put_contents("./GCMRegId.txt",$gcmRegID);
echo "Done!";
exit;
}
Mein Manifest für alle Fälle
<?xml version="1.0" encoding="utf-8"?>
<!-- GCM Permissions - Start here -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="com.example.amosang.pushtest.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.amosang.pushtest.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".HomeActivity"
android:label="@string/title_activity_home" >
</activity>
<receiver
android:name=".GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.example.amosang.pushtest" />
</intent-filter>
</receiver>
<service android:name=".GCMNotificationIntentService" />
</application>
UPDATE: Ich habe es geschafft diesen Code zu bekommen arbeiten lokal mein MAMP-Server verwenden, bleibt das Problem, wenn ich es auf diesem Host hochgeladen werden.
Wie Sie den Parameter hier übergeben? Durch Anhängen an URL? –
Sie leiten Daten an die URL weiter, indem Sie sie an die URL und per Post anhängen? Das ist das Problem, das ich denke –
Hallo, danke für die Antwort. Ich habe meinen Code in der Frage bearbeitet. Ich gebe die Daten durch die Parameter neben der URL – JianYA