Ludy
Hallo zusammen,
wie Pascal schon erwähnt, wäre ein Weg über Post der Kosten geringste Weg.
Und von GET zu POST umzuschreiben ist nun nicht der hit.
Naja hier mal der aktuelle Code:
WebClient hab ich ausprobiert und wie sich wirklich herausstellte bei c# für Android funktioniert nur die static IP.
Mit Apache und Localhost funktionierte es aber mit einer richtigen Domain nichtmehr. Im Xamarin hab ich diesen Bug auch oft gelesen nur nie eine Workaround oder sonstiges.
So sah der Code aus:
WebClient client = new WebClient();
Uri uri = new Uri(urlAdress);
NameValueCollection parameters = new NameValueCollection();
parameters.Add("Picture", Convert.ToBase64String(picData));
parameters.Add("Title", title.Text);
parameters.Add("Description", description.Text);
parameters.Add("Location", location.Text);
parameters.Add("FirstTag", tag1.Text);
parameters.Add("SecondTag", tag2.Text);
parameters.Add("CreationDate", datum);
parameters.Add("CreationName", "LukasReiner");
parameters.Add("CreationNameID", "1");
parameters.Add("ThumbUps", "0");
parameters.Add("ThumbDowns", "0");
parameters.Add("Requests", "0");
client.UploadValuesAsync(uri, parameters);
client.UploadValuesCompleted += client_UploadValuesCompleted;
void client_UploadValuesCompleted(object sender, UploadValuesCompletedEventArgs e)
{
RunOnUiThread(() =>
{
Console.WriteLine(Encoding.UTF8.GetString(e.Result));
});
}
Also musste ich was anderes suchen und kam durchs Xamarin.Android forum auf HttpClient.
Der Code sieht so aus:
using (HttpClient client = new HttpClient())
{
var postdataJson = JsonConvert.SerializeObject(new { Picture = byteData , Title = title.Text , Description = description.Text, Location = location.Text, FirstTag = tag1.Text, SecondTag = tag2.Text, CreationDate = datum , CreationName = "LukasReiner", CreationNameID = "1", ThumbUps = "0", ThumbDowns = "0", Requests = "0" });
var values = new Dictionary<string, string>();
values.Add("json", postdataJson);
var content = new FormUrlEncodedContent(values);
var responseObj = await client.PostAsync(urlAdress, content);
var responseString = await responseObj.Content.ReadAsStringAsync();
var responseobject = JsonConvert.DeserializeObject(responseString);
string respones = responseobject.ToString();
Toast.MakeText(this, respones, ToastLength.Long).Show();
}
Laut Xamarin sollte es so funktionieren da es ja client.PostAsync ist.
Nur irgendwie passiert nichts. Kein Error gar nichts. Hab ich was übersehen?
Die Php sieht zurzeit so aus:
$mPicture = $_GET["Picture"];
$mTitle = $_GET["Title"];
$mDescription = $_GET["Description"];
$mLocation = $_GET["Location"];
$mFirstTag = $_GET["FirstTag"];
$mSecondTag = $_GET["SecondTag"];
$mCreationDate = $_GET["CreationDate"];
$mCreationName = $_GET["CreationName"];
$mCreationNameID = $_GET["CreationNameID"];
$mThumbUps = $_GET["ThumbUps"];
$mThumbDowns = $_GET["ThumbDowns"];
$mRequests = $_GET["Requests"];
$mPicture = base64_decode($mPicture);
$mTitle = trim($mTitle);
$mDescription = trim($mDescription);
$mLocation = trim($mLocation);
$mFirstTag = trim($mFirstTag);
$mSecondTag = trim($mSecondTag);
$mCreationDate = trim($mCreationDate);
$mCreationName = trim($mCreationName);
$mCreationNameID = trim($mCreationNameID);
$mThumbUps = trim($mThumbUps);
$mThumbDowns = trim($mThumbDowns);
$mRequests = trim($mRequests);
$mDefaultPicture = "0";
$con = mysqli_connect ($host, $username, $pwd, $db) or die("Kann nicht verbinden!");
if(mysqli_connect_error($con))
{
echo "Verbindungsversuch zur Datenbank fehlgeschlagen ".mysqli_connect_error();
}
//SQL Befehl um Daten in den Table hinzuzufügen mit den Variablen
$sql = "INSERT INTO groups
(picture, title, description, createdby, IDcreatedby, creationdate, firsttag, secondtag, thirdtag, thumbups, thumbdowns, requests)
VALUES ('".$mPicture."',
'".$mTitle."',
'".$mDescription."',
'".$mCreationName."',
'".$mCreationNameID."',
'".$mCreationDate."',
'".$mLocation."',
'".$mFirstTag."',
'".$mSecondTag."',
'".$mThumbUps."',
'".$mThumbDowns."',
'".$mRequests."');";
$result = mysqli_query($con,$sql);
if($result)
{
echo "Guppe hinzugefügt";
} else
{
echo "Error";
}
mysqli_close($con);
?>
ist hier Post überhaupt richtig? Oder muss ich _GET?
— geändert am 29.08.2016, 10:13:30
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.