java代码如下,它即将连接到服务器并获取一些信息,您可以运行java代码并获得{"carrier":{"CFeeC":1,"COrderC":2,"CTaskC":3,"flag":1},"driver":{"DTaskC":1,"DTraceR":1、"flag":1},"userinfo":{"czBizOrgId":"30500002049,"czWebOrgId":545587,"hzBizOrgId:"30500000857","hzWebOrgId":545593,"用户电子邮件":"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}}}空
但当我运行iOS代码时,破解了java代码,答案是{"exception":"Authenticated access required"}似乎我发送的参数,服务器没有得到?为什么?
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;
但当我尝试使用iOS时,它错了,怎么了?谢谢
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;
}
您需要这样做:
NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"username", @"password"];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
这是一个行之有效的示例项目。样本