The java code is below,It's about to connect to the server and get some information, you can run the java code and get {"carrier":{"CFeeC":1,"COrderC":1,"CTaskC":1,"flag":1},"driver":{"DTaskC":1,"DTraceR":1,"flag":1},"userinfo":{"czBizOrgId":"30500002049","czWebOrgId":545587,"hzBizOrgId":"30500000857","hzWebOrgId":545593,"userEmail":"all@1.com","userId":545566,"userName":"all all all"},"return_code":"00","customer":{"flag":1,"hFeeC":1,"hOrderA":1,"hOrderC":1,"hOrderS":1,"hPlanM":1,"hPlanS":1}}null
but when i run iOS code blew the java code,answer is {"exception":"Authenticated access required"} it seems that tha parameter that i send ,the server didn't get?why?
public static void main(String[] args) {
System.out.println(test());
}
private static String test() {
String username = "all@1.com";
String password = "1";
String path = new String("http://61.174.31.28:9091/api/jsonws/UnicomWL-portlet.tcdcolligate/user-login/password/1/email/all%401.com"); // ƴ�����URL��ַ
//path = path.replace("+","%20");
try {
String authString =username + ":" +password;
String authStringEnc = new String(Base64.encode(authString.getBytes()));
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
connection.getOutputStream());
bufferedOutputStream.flush();
bufferedOutputStream.close();
if (connection.getResponseCode() != 200) {
throw new RuntimeException("ResponseCode != 200");
}
BufferedInputStream bufferedInputStream = new BufferedInputStream(
connection.getInputStream());
int bytesRead = 0;
byte[] buffer = new byte[1024];
while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
String chunk = new String(buffer, 0, bytesRead);
System.out.print(chunk);
}
connection.disconnect();
}
catch (Exception e) {
}
return null;
but when i tried used iOS ,it's wrong ,what's the matter? thank you
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
NSData *authData=[@"all@1.com:1" dataUsingEncoding:NSUTF8StringEncoding];
NSString *authStringEnc=[authData base64EncodedStringWithOptions:0];
NSString *auth=[NSString stringWithFormat:@"Basic +%@",authStringEnc];
NSLog(@"%@\n",auth);
NSString *path=@"http://61.174.31.28:9091/api/jsonws/UnicomWL-portlet.tcdcolligate/user-login/password/1/email/all%401.com";
NSURL *url=[NSURL URLWithString:path];
NSMutableURLRequest *request=[[NSMutableURLRequest alloc] initWithURL:url];
NSData *returnData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *s=[[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@",s);
}
return 0;
}
You need to do something like this:
NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"username", @"password"];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
Here is a sample project that worked. sample