Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

C# dan httpwebrequest ile php sayfasına data post etmek!


regal

Öne çıkan mesajlar

Haha güldürdün beni walla:) bak anlatayım açıkca ve de bu 'anlamadım hala' muhabeti sonlansın.
Bu proje Windows mobile 6.0 üzerinde yapılan bir proje. GPS ile kullanıcının koordinatlarını buluyo ve local database de tutulan yerler var ki bunlar kullanıcı 'yakınımdaki yerleri bul' diyince eğer kullanıcının bulunduğu yere göre yakınsa listeleniyo. Kullanıcı da bu listelenen yerlerden bi tanesini seçip 'map üzerinde göster' diyo. Bunların hepsi mobil de yapılan şeyler. Ben bu aşamada bi php sayfası oluşturdumki telefonumdan map'e bağlanıp map'i göriyim diye. Ama mapde nerenin koordinatlarını göstercek tabiki; kullacnın yeri ve seçtiği yakınındaki yeri. Ben bu koordinatları (mobilden elde ettiğim) php sayfasına göndermek ve web üzerinde dinamik bir map çizdirmek istiyorum. Sonrada bu çizilen mapi mobilden bağlanarak görmek istiyorum. Yani sonuç olarak kullanıcının weble alakası yok sadece koordinatları web adresine yollayıp bir harita görüntülüyo ama herşey mobilde olduyo kullanıcı açısından. Bilmem şimdi daha iyi anlatabildim mi? Nie web e yollamaya çalışıyorsun die sorarsan yaklaşık 2 haftadır araştırdım google map'i applicatiton olarak açıp kullanmayı beceremedim. En iyi yöntemin böle olacağına karar verdim. Varsa başka önerisi ona da açığım..
Link to comment
Sosyal ağlarda paylaş

şu php kodunda böyle bir satır var : if (GBrowserIsCompatible())
bunun else ine mesaj yazdırsana. sonrada telefondan kendi browserından açıp adresi gir bakalım o else de yazdığın çıkacakmı.

ha çıkmaz ise c# kodunda geri dönen değerleri debug ile öğren ve buraya yaz bakalım ne geliyor request sonrasında.
Link to comment
Sosyal ağlarda paylaş

El-Barto said:

Boş html sayfasında google maps açmayı denesene bi, bakalım o açılıyomu. Eğer açılıyosa sorun data almadadır yok açılmıyosa javascript çalışmasındadır.


abi http://cse492.mehmetsalimdemir.com adresine koydum bi google map girdim applicationdan açılmadı sayfa bom boş görünüyo.Demekki javascript ile bi alakası var. Acaba ben bu post işlemlerini aspx de yapsam ve google map aspx de göstermeye çalışsam olurmu. Var mıdır google map'in aspx formatında da gösterimi?
Link to comment
Sosyal ağlarda paylaş

mightee said:

şu php kodunda böyle bir satır var : if (GBrowserIsCompatible())
bunun else ine mesaj yazdırsana. sonrada telefondan kendi browserından açıp adresi gir bakalım o else de yazdığın çıkacakmı.

ha çıkmaz ise c# kodunda geri dönen değerleri debug ile öğren ve buraya yaz bakalım ne geliyor request sonrasında.


çıkmadı herhangi bir mesaj. Sayfa yine boş. c# da giden değerler benim ve seçtiğim yerin koordinat bilgileri. Yani; 40.02432423 ve 29.124234 gibi.
Link to comment
Sosyal ağlarda paylaş

Aspx sayfasında da aynı html'de kullandığın gibi kullanabiliyosun google mapsi sonuçta javascriptle oluyo. Ama burdaki sorun telefonun javascripti çalıştıramaması benim anladığım kadarıyla. Yani bi şekilde o boş google mapsi görüntülemeyi başardığında sistem çalışıcak heralde :D
Link to comment
Sosyal ağlarda paylaş

Ya console.write la işim yok benim. Ben web browser kullanıyorum url ye bağlanmak için direk properties kısmında url var direk oraya yazıyorum bağlanmak istediğim adresi. c# da sadece data yollamak için ben http request kullanıyorum console.write ı debug için yazdım da gerek yok onlara..
Link to comment
Sosyal ağlarda paylaş

Oce4n said:

Biraz daha açarmısın şu web browser kısmını.
C# ile bu browseri bağladığın kısmı göremedim ben senin verdiğin kodda.

verdiğim kodda yok çünkü ben verdiğim kodu projenin ana sayfasında işleme sokuyorum. Kullanıcı eğer 'haritada görüntüle' butonuna basarsa o verdiğim c# kodu çalışıyo ilk sonra bi tane map sayfası oluşturuyorum.Şu şekilde;
Map mapSection = new Map();
mapSection.Show();

mapsectionın design'nını yaparkende web browser koydum toolbox dan hani textbox label gibi şelerin olduğu yer var ya orda Webbrowser diye bişi var onu koyuyorum. ve onun propertiesindeki url ye de bağlanmak istediğim sayfanın adresini yazıyorum.
Yani ilk önce post edip, sonra map objesi yaratıyorum ve bu objenin anasayfasındada post ettiğim web sayfasının görülmesini istiyorum.
Link to comment
Sosyal ağlarda paylaş

Projenin ana sayfasındaki kodum şu şekilde;

c# kodu

private void goMapButton_Click(object sender, EventArgs e)
{
string data = "userlat=userlat&userlong=userlong&deslat=deslat&deslong=deslong";
httpPost2("http://cse492.mehmetsalimdemir.com", data);
Map mapSection = new Map();
mapSection.Show();
}



sonra map sayfasını açıp map görüntülemeyi istiyorum.
Link to comment
Sosyal ağlarda paylaş

response.write
ve
response.end
ile iphone da fln gosterebilirsin iste ama
response.contenttype = "buraya uygun output";

koyman gerekiyor.

php ye post etmek ajax post etmek gibi bisi,
tek fark header kismina php nin anlayacagi argumanlari ekle
bisiyi yok yani yada webservice kullan.
Link to comment
Sosyal ağlarda paylaş

reyou said:

response.write
ve
response.end
ile iphone da fln gosterebilirsin iste ama
response.contenttype = "buraya uygun output";

koyman gerekiyor.

php ye post etmek ajax post etmek gibi bisi,
tek fark header kismina php nin anlayacagi argumanlari ekle
bisiyi yok yani yada webservice kullan.


abi ekledim response.contenttype= postData; die ama yine olmadı. Bişi yok diyosun ama sabahtan beri bunla uğraşıyorum:) halletsem şunuda bende kurtulsam sizlerde:)
Link to comment
Sosyal ağlarda paylaş


public string Post(string url, string data) {


string vystup = null;
try
{
//Our postvars
byte[] buffer = Encoding.ASCII.GetBytes(data);
//Initialisation, we use localhost, change if appliable
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
//Our method is post, otherwise the buffer (postvars) would be useless
WebReq.Method = "POST";
//We use form contentType, for the postvars.
WebReq.ContentType = "application/x-www-form-urlencoded";
//The length of the buffer (postvars) is used as contentlength.
WebReq.ContentLength = buffer.Length;
//We open a stream for writing the postvars
Stream PostData = WebReq.GetRequestStream();
//Now we write, and afterwards, we close. Closing is always important!
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
//Get the response handle, we have no true response yet!
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
//Let's show some information about the response
Console.WriteLine(WebResp.StatusCode);
Console.WriteLine(WebResp.Server);

//Now, we read the response (the string), and output it.
Stream Answer = WebResp.GetResponseStream();
StreamReader _Answer = new StreamReader(Answer);
vystup = _Answer.ReadToEnd();

//Congratulations, you just requested your first POST page, you
//can now start logging into most login forms, with your application
//Or other examples.
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return vystup.Trim()+"n";

}
Link to comment
Sosyal ağlarda paylaş

yaklaşık 7.5 saattir bunlar üstünde calısıyorum ancak bir sonuç alamadım hiç bir kaynaktan daha önce yapmıs veya cözmüs olan biri varsa daha iyi olabilir, konuyu bölüyorum özürdilerim.

mesala evdeki bilgisayardan a.php ye girerek sunucudaki C:/ahmet/a.exe yi çalıştırmak istiyorum.

apache ve php5 kurulu
Link to comment
Sosyal ağlarda paylaş

reyou said:

yukaridaki kodda senin php sayfani koy url kismina,
php sayfasindada gelen request e gore cevap vericen
bu C# sayfasida gelen cevabi yazicak.

yaptım abicim ben o koduda şu şekilde;


public string httpPost(string url, String sample)
{
string result = null;
try
{
byte[] buffer = Encoding.ASCII.GetBytes(sample);
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
WebReq.Method = "POST";
WebReq.ContentType = "application/x-www-form-urlencoded";
WebReq.ContentLength = buffer.Length;
Stream PostData = WebReq.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
Stream Answer = WebResp.GetResponseStream();
StreamReader _Answer = new StreamReader(Answer);
MessageBox.Show(_Answer.ReadToEnd());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return result.Trim() + "n";
}



burda message box ile göster dediğim için bana php sayfamın içeriği dönüyo ama sonrasında hata veriyo.
Şimdi şu yolladığım data'dan şüphelendim acaba şöle bişiy mi olmalı;
string data = "userlat=" + userlat + "userlong=" + userlong + "deslat=" + deslat + "deslong=" + deslong;
Link to comment
Sosyal ağlarda paylaş

bi ara buna benzer bişi icin yazmıstım, işine yarar senin de.


private static string GetResponse(HttpWebRequest webRequest)
{
WebResponse response = webRequest.GetResponse();
//WebHeaderCollection headerCollection = response.Headers;

Stream objStream = response.GetResponseStream();
StreamReader objReader = new StreamReader(objStream, Encoding.GetEncoding("windows-1254"));

string sLine = "";

StringBuilder contentBuffer = new StringBuilder();
while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null)
contentBuffer.Append(sLine);
}

return contentBuffer.ToString();

}


private static string PostRequest(string urlAddress, CookieContainer cookies , bool isPost, Dictionary<string, string> postVariables)
{

try
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(urlAddress);
webRequest.CookieContainer = cookies;
webRequest.Proxy = new WebProxy(PROXY_HOST, PROXY_PORT);
webRequest.Proxy.Credentials = CredentialCache.DefaultCredentials;
webRequest.ProtocolVersion = HttpVersion.Version10;

if (isPost)
{
string postString = dictionaryToPostString(postVariables);
byte[] postBytes = Encoding.ASCII.GetBytes(postString);

webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = postBytes.Length;

Stream postStream = webRequest.GetRequestStream();
postStream.Write(postBytes, 0, postBytes.Length);
postStream.Close();
}

string response = GetResponse(webRequest);

return response;
}
catch (WebException e)
{
using (WebResponse response = e.Response)
{
HttpWebResponse httpResponse = (HttpWebResponse)response;
Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
using (Stream data = response.GetResponseStream())
{
string text = new StreamReader(data).ReadToEnd();
Console.WriteLine(urlAddress);
Console.WriteLine(text);

return text;
}
}
}

}



Sayfalar arasında dolasırken auto cookie yönetimi icin de
ilk basta bi obje yaratıp bütün işleri bunla yapman lazım.
CookieContainer cookies = new CookieContainer();

Yalnız şöle bişi var, httpreq js,ajax vs calıstırmaz. WebBrowser lazım o tür seyleri de auto ahndle etmek istiosan...
Link to comment
Sosyal ağlarda paylaş

Ceday said:


Sayfalar arasında dolasırken auto cookie yönetimi icin de
ilk basta bi obje yaratıp bütün işleri bunla yapman lazım.
CookieContainer cookies = new CookieContainer();

Yalnız şöle bişi var, httpreq js,ajax vs calıstırmaz. WebBrowser lazım o tür seyleri de auto ahndle etmek istiosan...


Cvp için tşkler öncelikle. cookiecontainer'ı postrequest metodunun içinde mi yaratıp bütün işleri bunla yapman lazım diyosun?
Birde, web browser dediğin (opera yada explorer gibi) şeyleri ben nasıl applicationımdan açıcam?
Link to comment
Sosyal ağlarda paylaş

su da diger method bu arada

public static string dictionaryToPostString(Dictionary<string, string> postVariables)
{
StringBuilder postStringBuffer = new StringBuilder();
foreach (KeyValuePair<string, string> pair in postVariables)
{
postStringBuffer.Append(HttpUtility.UrlEncode(pair.Key));
postStringBuffer.Append("=");
postStringBuffer.Append(HttpUtility.UrlEncode(pair.Value));
postStringBuffer.Append("&");
}
return postStringBuffer.ToString();
}


sole kullanıcan mesela.



CookieContainer cookies = new CookieContainer();
Dictionary<string, string> postVariables = new Dictionary<string, string>();
postVariables.Add(HttpUtility.UrlDecode("username"), HttpUtility.UrlDecode("password"));

string response = postRequest(LOGIN_URL, cookies, true, postVariables);
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...