import java.io.BufferedReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.io.InputStreamReader;
import anywheresoftware.b4a.BA.Author;
import anywheresoftware.b4a.BA.IterableList;
import anywheresoftware.b4a.BA.Permissions;
import anywheresoftware.b4a.BA.ShortName;
import anywheresoftware.b4a.BA.Version;
import anywheresoftware.b4a.objects.collections.Map;
@ShortName("requestHTTP")
@Permissions(values = {"android.permission.INTERNET"})
@Author("KeirS")
@Version(1)
public class requestHTTP {
/**
* Simple one line Http Request
*For GET requests pass null to the postData parameter
*If you do not have headers pass null to the header parameter
*/
public static String HttpsRequestUrl(String Url,String requestType, Map Header,String postData, String contentType ) throws IOException {
HttpURLConnection reqConnection = null;
OutputStreamWriter writeRequest = null;
BufferedReader readResponse = null;
StringBuilder sb = null;
String line = null;
URL serverAddress = null;
try {
serverAddress = new URL(Url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
reqConnection = (HttpURLConnection)serverAddress.openConnection();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
reqConnection.setAllowUserInteraction(false);
reqConnection.setDoOutput(true);
reqConnection.setRequestProperty("Content-Type",contentType);
try {
reqConnection.setRequestMethod(requestType);
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (Header != null) {
IterableList addHeaders = Header.Keys();
for (int nCounter = 0 ; nCounter < addHeaders.getSize(); nCounter++) {
reqConnection.addRequestProperty(Header.GetKeyAt(nCounter).toString(),Header.GetValueAt(nCounter).toString());
}
}
reqConnection.connect();
if (postData != null) {
writeRequest = new OutputStreamWriter(reqConnection.getOutputStream());
writeRequest.write(postData);
writeRequest.flush();
}
readResponse = new BufferedReader(new InputStreamReader(reqConnection.getInputStream()));
sb = new StringBuilder();
while ((line = readResponse.readLine()) != null)
{
sb.append(line + '\n');
}
reqConnection.disconnect();
return sb.toString();
}
}