In: Computer Science
Java Prorgramming |
Description In this assignment, you'll be URL encoding of a line of text. Web browsers URL encode certain values when sending information in requests to web servers (URL stands for Uniform Resource Locator). Your program needs to perform the following steps:
To convert a String to URL encoded format, each character is examined in turn:
Use a for loop which increments it's index variable from 0 up to the last character position in the input string. Each iteration of the loop retrieves the character at the 'index' position of the input string (call the String class charAt() method on the input string). Use if statements to test the value of the character to see if it needs to be encoded. If encoding is not required, just concatenate it to the output encoded String. If encoding is required, concatenate the encoded value to the output encoded String. For example, if the input character is a blank, you want to concatenate a '+' character to the output encoded String (as described above). Note: one technique to determine if a character is one that remains the same is to first create an initialized String containing all of the letters (both upper and lower case), digits, and other special characters that remain the same as described above. Then, call the String indexOf method on that String, passing the character to be tested. If -1 is returned from indexOf, the character was not one of those that remains the same when URL encoding. For those characters that need to be converted into hex format (%xy above), you can call the pre-defined static Integer.toHexString method, passing the character as an argument. It returns the hex value of the character as a String, which you can concatenate to the encoded output String with the accompanying '%' symbol: String hexValue =
Integer.toHexString(srcChar); Values that are URL encoded in this manner can be URL decoded by reversing the process. This is typically done by a web server upon receiving a request from a browser. Sample Output Enter a line of text to be URL encoded Test Data Use all the following test data to test your program, plus an example of your own: This should have hex 2f for / Getting started Before you start writing Java code, it's usually a good idea to 'outline' the logic you're trying to implement first. Once you've determined the logic needed, then start writing Java code. Implement it incrementally, getting something compiled and working as soon as possible, then add new code to already working code. If something breaks, you'll know to look at the code you just added as the likely culprit. To help you get started with this homework, here's an outline of the logic you'll need (sometime referred to as 'pseudo-code'): Prompt for the line of input. if (the character is a blank) Print the encoded output string. Once you understand this logic, start writing your Java code. An example of the steps you could take are as follows:
With this much done, if you read in a line containing "hello", you'd get output something like this from the temporary output statement within the loop: char 0 is h Once you've got this compiled and working, starting adding the if/else-if/else logic inside the loop to build the encoded output string. I have this so far.What am I doing wrong here,please let me know. The code has to fit this requirement. For those characters that need to be converted into hex format (%xy above), you can call the pre-defined static Integer.toHexString method, passing the character as an argument. It returns the hex value of the character as a String, which you can concatenate to the encoded output String with the accompanying '%' symbol: String hexValue =
Integer.toHexString(srcChar); Values that are URL encoded in this manner can be URL decoded by reversing the process. This is typically done by a web server upon receiving a request from a browser. I don't how to fit the last requirement here is my code so far import java.util.Scanner; public class URLEncoding { public static final String
Notencodedchars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.!~*'()";
} System.out.println("Length in chars is :" + encodedString.toString().length()); } }
|
************* URLEncoding.java *************
import java.util.Scanner;
public class URLEncoding {
public static final String Notencodedchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.!~*'()";
public static void main(String args[]) {
System.out.println("Enter a line of
text to be URL encoded");
// Create a scanner to read from
keyboard
@SuppressWarnings("resource")
Scanner sc = new
Scanner(System.in);
String input = sc.nextLine();
System.out.println("The String read
is :");
System.out.println("Length in chars
is: " + input.length());
String Encoded = "";
for (int indexOf = 0; indexOf <
input.length(); indexOf++) {
// This line
will pick one character per loop
char ch =
input.charAt(indexOf);
if
(Notencodedchars.indexOf(ch) != -1) {
Encoded += ch;
} else if (ch ==
' ')
// Encoded.concat("+");
Encoded += '+';
else {
String hexValue = Integer.toHexString(ch);
Encoded += '%' + hexValue;
}
}
System.out.println("The encoded
string is :" + Encoded.toString());
System.out.println("Length in chars
is :" + Encoded.toString().length());
}
}
############ Sample output ###############