How many parellel connection HTTPClient can make - java

Below is the code which we are using to call Microsoft Dynamics. I want to know how many parallel connection this code can create or how many parallel request it can send.
HttpClient client = new HttpClient();
client.getParams().setParameter(CredentialsProvider.PROVIDER, new ConsoleAuthPrompter(logger));
String strURL = getstringURL();
String strSoapAction = "";
strSoapAction = getSoapAction();
PostMethod httppost = new PostMethod(strURL);
String ContetType = getContentType();
RequestEntity entity = new StringRequestEntity(getSOAPxml(),"application/json", "utf-8");
httppost.setRequestEntity(entity);
httppost.setRequestHeader("SOAPAction", strSoapAction);
httppost.setDoAuthentication(true);
try {
// execute the GET
int status = client.executeMethod(httppost);
if (httppost.getStatusCode() == 200)
setReply_SOAPxml(httppost.getResponseBodyAsString());
else {
logger.error("Server Replied with Error :"
+ httppost.getStatusCode() + " "
+ httppost.getStatusText() + " "
+ httppost.getResponseBodyAsString());
throw new Exception("Server Replied with Error : ["
+ httppost.getStatusLine().toString() + "] "
+ httppost.getStatusCode() + " "
+ httppost.getStatusText() + " "
+ httppost.getResponseBodyAsString());
}
} finally {
// release any connection resources used by the method
httppost.releaseConnection();
}
}

Related

How to run the unit test I am getting 415 error , but passing the json in correct format?

#Test
public void testAuthenticationForSubmitModelingRequest() {
String url = "http://localhost:9081/prop/submitModellingRequest";
String name = "admin";
String password = "admin";
String authString = name + ":" + password;
byte[] authStringEnc = Base64.getEncoder().encode(authString.getBytes());
String input = "{\"modelingVersionID\":\"1007\",\n" +
"\"modelingRequestID\":\"75891\",\n" +
"\"cycleId\":\"20033\",\n" +
" \"imtId\":\"225\",\n" +
" \"submarketID\":\"0\",\n" +
"\"brandSubSubGroupID\":\"11\",\n" +
"\"modelStatus\":null,\n" +
"\"modelingTechStatus\":null,\n" +
"\"requestType\":null,\n" +
"\"targetType\":\"0\",\n" +
"\"targetTypeName\":null,\n" +
"\"serverId\":\"1\"}";
String authStringEnc1 = new String(authStringEnc);
System.out.println("Base64 encoded auth string: " + authStringEnc);
Client restClient = Client.create();
WebResource webResource = restClient.resource(url);
ClientResponse resp = webResource.accept("application/json").header("Authorization", "Basic " + authStringEnc1)
.post(ClientResponse.class,input);
if (resp.getStatus() != 201) {
System.err.println("Unable to connect to the server");
}
String output = resp.getEntity(String.class);
System.out.println("response: " + output);
}
Getting 415 error when trying to run the unit test even though passing the json in correct format..trying to call post method on my rest api please help

I can login a webpage (aspx) with python but i can't with JSoup

import requests as rq
url = "https://ogrotomasyon.uludag.edu.tr/login.aspx?un="
data = { "__EVENTTARGET" : "", "__EVENTARGUMENT" : "",
"__VIEWSTATE" : "",
"__VIEWSTATEGENERATOR" : "C2EE9ABB",
"__EVENTVALIDATION" : "",
"un":"USERNAME", "pw":"PASSWORD", "ok22": "Giriş"}
s = rq.Session()
a = s.get(url, verify=0)
print(a.text)
d1 = input()
d2 = input()
data["__VIEWSTATE"] = d1
data["__EVENTVALIDATION"] = d2
a = s.post(url, data=data, verify=0)
s.get(a.url)
print(a.url)
I can login the system with this code when i copy __VIEWSTATE and __EVENTVALIDATION truely.
CAREFULL : I'm using one session. If i use just 'rq.get("URL")' i cannot log in. I have to use one and always same session
public static void main(String[] args) {
try {
Connection.Response first = Jsoup.connect("https://ogrotomasyon.uludag.edu.tr/login.aspx")
.validateTLSCertificates(false)
.method(Connection.Method.GET)
.execute();
Elements form = first.parse().select("form");
Elements inputs = form.select("input");
System.out.println(inputs.get(0).id() + " " + inputs.get(0).val());
System.out.println(inputs.get(1).id() + " " + inputs.get(1).val());
System.out.println(inputs.get(2).id() + " " + inputs.get(2).val());
System.out.println(inputs.get(3).id() + " " + inputs.get(3).val());
System.out.println(inputs.get(4).id() + " " + inputs.get(4).val());
System.out.println(inputs.get(7).id() + " " + inputs.get(7).val());
Document second = Jsoup.connect("https://ogrotomasyon.uludag.edu.tr/login.aspx")
.validateTLSCertificates(false)
.data(inputs.get(0).id(), inputs.get(0).val())
.data(inputs.get(1).id(), inputs.get(1).val())
.data(inputs.get(2).id(), inputs.get(2).val())
.data(inputs.get(3).id(), inputs.get(3).val())
.data(inputs.get(4).id(), inputs.get(4).val())
.data("un", "USERNAME")
.data("pw", "PASSWORD")
.data(inputs.get(7).id(), inputs.get(7).val())
.post();
System.out.println(second.text());
} catch (IOException e) {
e.printStackTrace();
}
}
}
But i can't log in with this code. Actually sometimes i can but few times it "throws java.net.UnknownHostException"
How can i connect via 2nd code?

Java BufferedWriter file content is empty [duplicate]

This question already has answers here:
Bufferedwriter works, but file empty?
(4 answers)
Closed 6 years ago.
I want to create One file with .cfg extension and content of this file must be in below format
define host {
host_name test.testing.local
alias Server 1
address 192.168.1.111
check_command check-host-alive
max_check_attempts 10
check_interval 5
retry_interval 5
active_checks_enabled 1
passive_checks_enabled 1
check_period 24x7
register 1
}
For this I am using below code
#POST
#Consumes("application/x-www-form-urlencoded")
#Path("/addNewHost")
public Response AddNewHost(String json) {
JSONObject returnJson = new JSONObject();
try {
JSONObject innerJsonObj = new JSONObject(json);
HostObj hostObj = new HostObj();
hostObj.hostname = innerJsonObj.getString("hostname");
hostObj.ipaddress = innerJsonObj.getString("ipaddress");
hostObj.alias = innerJsonObj.getString("alias");
hostObj.check_command = innerJsonObj.getString("check_command");
hostObj.notification_period = innerJsonObj.getString("notification_period");
hostObj.max_check_attempts = innerJsonObj.getInt("max_check_attempts");
hostObj.active_checks_enabled = innerJsonObj.getInt("active_checks_enabled");
hostObj.passive_checks_enabled = innerJsonObj.getInt("passive_checks_enabled");
hostObj.register = innerJsonObj.getBoolean("register");
hostObj.chIntervalInMinutes = innerJsonObj.getInt("chIntervalInMinutes");
hostObj.retryIntervalInMinutes = innerJsonObj.getInt("retryIntervalInMinutes");
hostObj.contact_groups = innerJsonObj.getString("contact_groups");
hostObj.check_period = innerJsonObj.getString("check_period");
String filename = hostObj.ipaddress.replace(".", "");
Properties propFile = LoadProp.getProperties();
BufferedWriter writer = Files.newBufferedWriter(Paths.get(propFile.getProperty(Constants.filepath) + filename + ".cfg"));
writer.write("define host {\n");
writer.write("\thost_name\t" + hostObj.hostname + "\n");
writer.write("\talias\t" + hostObj.alias + "\n");
writer.write("\taddress\t" + hostObj.ipaddress + "\n");
writer.write("\tcheck_command\t" + hostObj.check_command + "\n");
writer.write("\tmax_check_attempts\t" + hostObj.max_check_attempts + "\n");
writer.write("\tcheck_interval\t" + hostObj.chIntervalInMinutes + "\n");
writer.write("\tretry_interval\t" + hostObj.retryIntervalInMinutes + "\n");
writer.write("\tactive_checks_enabled\t" + hostObj.active_checks_enabled + "\n");
writer.write("\tpassive_checks_enabled\t" + hostObj.passive_checks_enabled + "\n");
writer.write("\tcheck_period\t" + hostObj.check_period + "\n");
writer.write("\tregister\t" + hostObj.register + "\n}");
returnJson.put("success", true);
} catch (Exception e) {
JSONObject errorJson = new JSONObject();
errorJson.put("success", false);
errorJson.put("error", errorMsg);
return Response.ok(errorJson.toString()).header("Access-Control-Allow-Origin", "*").build();
}
return Response.ok(returnJson.toString()).header("Access-Control-Allow-Origin", "*").build();
}
But problem is that when I run this, my file is created with empty data.
So please help me to fix this issue.
I am using Java with Eclipse Mars 1.
You need to flush and close the writer by
writer.flush();
writer.close();

URLConnection doesn't work with public FTP servers in Android

My issue: my android device is unable to connect to a public FTP server using URLConnection. However, when the device tried to connect to a public FTP server (anonymous for username and no password), it cannot retrieve the InputStream from urlConnection.getInputStream();.
I do not use FTPClient from Apache Commons library because the speed is quite limited... A related question regarding that limited speed with FTPClient is here
FTPClient's download is slower than URLConnection's download.
Whatever I tried with the urlString:
urlString = protocol+"://" + username+"#" +address+":"+port + filepath + file;
// ftp://anonymous#speedtest.tele2.net:21/100GB.zip
urlString = protocol+"://" + username+":" + password + "#" +address+":"+port + filepath + file;
// ftp://anonymous:#speedtest.tele2.net:21/100GB.zip
urlString = protocol+"://" + username+":" + "password" + "#" +address+":"+port + filepath + file;
// ftp://anonymous:password#speedtest.tele2.net:21/100GB.zip
urlString = protocol+"://" + address+":"+port + filepath + file;
// ftp://speedtest.tele2.net:21/100GB.zip
downloadAndBroadcastURL:after getinputStream is never got logged with open FTP servers. I also tried with these two public FTP servers:
ftp://speedtest.tele2.net/100GB.zip
ftp://ftp.funet.fi/dev/1GBnull
But it doesn't connect as well.
My code:
private void downloadAndBroadcastURL() {
beginTime = System.currentTimeMillis();
try {
String urlString;
if (username.equals("anonymous")){
urlString = protocol+"://" + username+"#" +address+":"+port + filepath + file;
} else {
urlString = protocol+"://" + username+":" + password + "#" +address+":"+port + filepath + file;
}
Log.d(TAG, "downloadAndBroadcastURL: "+ urlString);
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
Log.d(TAG, "downloadAndBroadcastURL:after connect ");
inputStream = new BufferedInputStream(urlConnection.getInputStream());
Log.d(TAG, "downloadAndBroadcastURL:after getinputStream");
/*******************************
The rest is about handling the input stream, the download...
*****************************/
long difference;
byte data[] = new byte[4094];
int count;
while ((count = inputStream.read(data)) != -1 && download) {
downloadCount += count;
long stopTime = System.currentTimeMillis();
difference = stopTime - beginTime;
if (difference > 1000 && download) {
currentSpeed = downloadCount / (difference / 1000L); //for precision, because difference can be more than 1000 sometimes
averageSpeed = (averageSpeed + currentSpeed) / 2;
Log.d(TAG, "Speed: " + downloadCount + " bytes/s. " + (downloadCount / 1024) + "kB/s " + (downloadCount / 128) + "kbit/s " + (downloadCount / 1048576) + "Mb/s " + ((downloadCount) / (1024 * 128)) + "Mpbs" + (downloadCount / 131072) + "Mbit/s difference:" + difference + "ms");
if (download) {
broadcastSpeed();
}
downloadCount = 0; //Resetoidaan määrä
beginTime = stopTime;
}
if (!download) {
Log.d(TAG, "downloadAndBroadcast: download stops");
clearInputStream();
}
}
clearInputStream();
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "FAIL " + e.toString());
} finally {
Log.d(TAG, "downloadAndBroadcastURL: ");
clearInputStream();
Log.d(TAG, "downloadAndBroadcast: finally");
}
}
Does anyone have any idea? Thanks in advance!

How to create a commons-net FTPClient from a URL

Is there a way to construct an FTPClient instance from a URL such as ftp://user:pass#foo.bar:2121/path, similar to FtpURLConnection in the JDK?
If your problem is the parsing then use the code below to parse and then just create a wrapper class ...
import java.net.; import java.io.;
public class ParseURL {
public static void main(String[] args) throws Exception {
URL aURL = new URL("http://java.sun.com:80/docs/books/tutorial"
+ "/index.html?name=networking#DOWNLOADING");
System.out.println("protocol = " + aURL.getProtocol());
System.out.println("authority = " +
aURL.getAuthority());
System.out.println("host = " + aURL.getHost());
System.out.println("port = " + aURL.getPort());
System.out.println("path = " + aURL.getPath());
System.out.println("query = " + aURL.getQuery());
System.out.println("filename = " + aURL.getFile());
System.out.println("ref = " + aURL.getRef());
} }
Here's the output displayed by the program:
protocol = http
authority = java.sun.com:80
host = java.sun.com
port = 80
path = /docs/books/tutorial/index.html
query = name=networking
filename = /docs/books/tutorial/index.html?name=networking
ref = DOWNLOADING
There is no direct constructor available for it,
You can use something
FTPClient f = new FTPClient();
f.connect(server);
f.login(username, password);

Categories

Resources