How to HTTP get/post request ?

Monkey Targets Forums/XNA/How to HTTP get/post request ?

Fred(Posted 2013) [#1]
HttpRequest isn't implemented for XNA PC. And I can't find a solution here.

What is the simplest way to Post data to a website ?


skid(Posted 2014) [#2]
Hey Fred, sorry I missed this post. Here is some code I have been using

request.cs:

public abstract class Request{

    private string uri;
    private HttpWebRequest request;
    private HttpWebResponse response;
    private Stream stream;
    private StreamReader reader;
    private Thread thread;
    private string reply;

    public abstract int OnReply(string reply);

    public void Get( string url ){
        uri = "http://" + url;
        thread = new Thread(new ThreadStart(Run));
        thread.Start();
    }

    public void Run()
    {
        try
        {
            request = (HttpWebRequest)WebRequest.Create(uri);
            response = (HttpWebResponse)request.GetResponse();
            stream = response.GetResponseStream();
            reader = new StreamReader(stream,Encoding.UTF8);
            reply = reader.ReadToEnd();
// todo: need game mutex
            OnReply(reply);
        }
        catch (Exception e)
        {
            System.Console.Out.WriteLine("Get failed: "+e.ToString());
        }
}
}


xnarequest.monkey:

#If TARGET="xna"
Import "request.cs"

Extern 
Class Request
	Method Get(url$)
	Method OnReply(text$)
End

Public
Interface IOnHttpRequestComplete
	Method OnHttpRequestComplete:Void( request:HttpRequest )	
End

Class HttpRequest Extends Request
	Field url$
	Field get$
	Field ready
	Field status
	Field response$
	Field requestComplete:IOnHttpRequestComplete
	
	Method New( req0:String,url0:String,onComplete0:IOnHttpRequestComplete )
		url=url0
		get=req0
		requestComplete=onComplete0
		Receive 0,0,""
	End

	Method Send()
		Get url
	End
	
	Method OnReply(text$)
		status=3
		response=text
		requestComplete.OnHttpRequestComplete(Self)
	End

	Method Receive(ready0,status0,text$)
		ready=ready0
		If ready=4
			status=status0
			response=text
			requestComplete.OnHttpRequestComplete(Self)
		Endif
	End
		
	Method Status()
		Return status
	End
	
	Method Ready()
		Return ready
	End

	Method ResponseText$()
		Return response
	End
End

#Else

Import brl.httprequest

#Endif



At top of Program.cs add this

#if WINDOWS
using System.Net;
#endif